{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "尝试利用xgboost对青岛房价进行预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "import requests,time,re,csv\n",
    "from bs4 import BeautifulSoup as BS\n",
    "from datetime import datetime\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import xgboost as xgb\n",
    "%matplotlib inline\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "数据爬取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def request_url(url,headers):\n",
    "    '''\n",
    "    访问网页,返回解析的网页代码\n",
    "    '''\n",
    "    try:\n",
    "        resp = requests.get(url,headers=headers)\n",
    "        soup = BS(resp.text, 'lxml')\n",
    "        if resp.status_code==200: \n",
    "            return soup\n",
    "    except requests.RequestException:\n",
    "        return None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_position_url(soup_position_url):\n",
    "    '''\n",
    "    获取该城市各地区链接,并返回连接列表\n",
    "    '''\n",
    "    position_url_list = []\n",
    "    tags = soup_position_url.find('div',class_=\"position\").find_all('a')\n",
    "    position_url_list = ['https://qd.lianjia.com'+i['href'] for i in tags[1:]]\n",
    "    return position_url_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_position_name(soup_position_url):\n",
    "    '''\n",
    "    获取该城市地区名称\n",
    "    '''\n",
    "    position_name_list = []\n",
    "    tags = soup_position_url.find('div',class_=\"position\").find_all('a')\n",
    "    position_name_list = [i['title'][2:4]+'区' for i in tags[1:]]\n",
    "    return position_name_list\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_urlist(soup):\n",
    "    '''\n",
    "    获取该地区每页的商品链接\n",
    "    '''\n",
    "    tags = soup.find('ul',class_=\"listContent\").find_all('a',class_=\"img\")\n",
    "    urlist = [i['href'] for i in tags]\n",
    "    return urlist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_house(soup):\n",
    "    '''\n",
    "    获取房源信息\n",
    "    '''\n",
    "    # 楼盘名称,成交价,成交单价,成交周期,位置\n",
    "    house = [] \n",
    "    house_code = [\n",
    "        r\"\"\"soup.find('div',class_=\"wrapper\").text.split(' ')[0]\"\"\", \n",
    "        r\"\"\"soup.find('div',class_=\"price\").find('i').text\"\"\",\n",
    "        r\"\"\"soup.find('div',class_=\"price\").find('b').text\"\"\",\n",
    "        r\"\"\"soup.find('div',class_='msg').find_all('span')[1].text\"\"\",\n",
    "        r\"\"\"soup.find('div',class_=\"deal-bread\").find_all('a')[3].text\"\"\",\n",
    "    ]\n",
    "    for i in house_code:\n",
    "        try:\n",
    "            house.append(eval(i))\n",
    "        except Exception as e:\n",
    "            house.append(np.nan)\n",
    "            print('house1 '+str(i)+' got wrong，请检查网址:'+soup.find('link',rel='canonical')['href']) #用于检查网址  \n",
    "    house1 = [] \n",
    "    # 房屋户型,所在楼层,建筑面积\n",
    "    for i in range(3):\n",
    "        try:\n",
    "            house1.append(soup.find('div',class_=\"newwrap baseinform\").find_all('li')[i].text[4:].strip())\n",
    "        except Exception as e:\n",
    "            house1.append(np.nan)\n",
    "    #房屋朝向,建成年代,装修情况,建筑结构,供暖方式,梯户比例,产权年限,配备电梯,链家编号\n",
    "    for i in range(6,15):\n",
    "        try:\n",
    "            house1.append(soup.find('div',class_=\"newwrap baseinform\").find_all('li')[i].text[4:].strip())\n",
    "        except Exception as e:\n",
    "            house1.append(np.nan)    \n",
    "    info = [*house,*house1]\n",
    "    return info\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def data_write(data,columns):\n",
    "    times = time.strftime(\"%Y-%m-%d\", time.localtime())     \n",
    "    with open(times+'all_data.csv','a+',newline='') as f:\n",
    "        writer = csv.writer(f)   \n",
    "        #writer.writerow(columns)\n",
    "        for row in data:\n",
    "            writer.writerow(row)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def main(url,headers,start_page,end_page,columns):\n",
    "    '''\n",
    "    start_page:起始页\n",
    "    end_page:结束页\n",
    "    columns:特征列表\n",
    "    '''\n",
    "    # 网址列表\n",
    "    list_all_url = []\n",
    "    for n in range(start_page,end_page+1):\n",
    "        soup_url = request_url(url+str(n)+'/',headers)#解析单页网址\n",
    "        if soup_url != None:#判断请求网页是否成功\n",
    "            houses_urlist = get_urlist(soup_url)#获取所有房源信息网址列表\n",
    "            list_all_url.extend(houses_urlist)\n",
    "        else:\n",
    "            missed1.append(url+str(n)+'/') #存放失败的网址\n",
    "            continue\n",
    "    # 解析网址列表\n",
    "    data_all = []\n",
    "    missed2 = []\n",
    "    for u in list_all_url:\n",
    "        soup_house = request_url(u,headers)\n",
    "        if soup_house != None:#请求网页成功则获取房源信息,失败则加入失败的网址\n",
    "            house_info = get_house(soup_house)\n",
    "            data_all.append(house_info)\n",
    "        else:\n",
    "            missed2.append(u)\n",
    "            continue\n",
    "    # 写入数据\n",
    "    data_write(data_all,columns)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "开始爬取青岛市各地区二手房成交信息\n",
      "正在进行市南区数据爬取\n",
      "市南区数据爬取已完成\n",
      "正在进行市北区数据爬取\n",
      "市北区数据爬取已完成\n",
      "正在进行李沧区数据爬取\n",
      "李沧区数据爬取已完成\n",
      "正在进行崂山区数据爬取\n",
      "崂山区数据爬取已完成\n",
      "正在进行黄岛区数据爬取\n",
      "黄岛区数据爬取已完成\n",
      "正在进行城阳区数据爬取\n",
      "城阳区数据爬取已完成\n",
      "正在进行胶州区数据爬取\n",
      "胶州区数据爬取已完成\n",
      "正在进行即墨区数据爬取\n",
      "即墨区数据爬取已完成\n",
      "正在进行平度区数据爬取\n",
      "平度区数据爬取已完成\n",
      "正在进行莱西区数据爬取\n",
      "莱西区数据爬取已完成\n",
      "青岛市各地区数据爬取已完成\n"
     ]
    }
   ],
   "source": [
    "#链家青岛页面\n",
    "url = 'https://qd.lianjia.com/chengjiao/'\n",
    "headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'}\n",
    "#获取解析后的链接\n",
    "soup_position_url = request_url(url,headers)\n",
    "#获取该城市各地区链接\n",
    "position_url = get_position_url(soup_position_url)\n",
    "#获取该城市各地区名称\n",
    "position_name = get_position_name(soup_position_url)\n",
    "columns = ['楼盘名称','成交价','成交单价','成交周期','位置','房屋户型','所在楼层','建筑面积'\n",
    "        ,'房屋朝向','建成年代','装修情况','建筑结构','供暖方式','梯户比例','产权年限','配备电梯','链家编号']\n",
    "times=time.strftime(\"%Y-%m-%d\", time.localtime())\n",
    "#将特征作为列名写入文件\n",
    "with open(times+'all_data.csv','a+',newline='') as f:\n",
    "        writer = csv.writer(f)\n",
    "        writer.writerow(columns)\n",
    "print('开始爬取青岛市各地区二手房成交信息')\n",
    "for url,name in zip(position_url,position_name):\n",
    "    print('正在进行%s数据爬取'% name)\n",
    "    main(url,headers,1,40,columns)\n",
    "    print('%s数据爬取已完成' % name)\n",
    "print('青岛市各地区数据爬取已完成')\n",
    "        "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "数据清洗,预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 9720 entries, 0 to 9719\n",
      "Data columns (total 17 columns):\n",
      "楼盘名称    9720 non-null object\n",
      "成交价     9720 non-null int64\n",
      "成交单价    9720 non-null int64\n",
      "成交周期    9720 non-null object\n",
      "位置      9720 non-null object\n",
      "房屋户型    9720 non-null object\n",
      "所在楼层    9720 non-null object\n",
      "建筑面积    9720 non-null object\n",
      "房屋朝向    9720 non-null object\n",
      "建成年代    9720 non-null object\n",
      "装修情况    9720 non-null object\n",
      "建筑结构    9720 non-null object\n",
      "供暖方式    9720 non-null object\n",
      "梯户比例    9720 non-null object\n",
      "产权年限    9720 non-null object\n",
      "配备电梯    9720 non-null object\n",
      "链家编号    9720 non-null int64\n",
      "dtypes: int64(3), object(14)\n",
      "memory usage: 1.3+ MB\n",
      "None\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>楼盘名称</th>\n",
       "      <th>成交价</th>\n",
       "      <th>成交单价</th>\n",
       "      <th>成交周期</th>\n",
       "      <th>位置</th>\n",
       "      <th>房屋户型</th>\n",
       "      <th>所在楼层</th>\n",
       "      <th>建筑面积</th>\n",
       "      <th>房屋朝向</th>\n",
       "      <th>建成年代</th>\n",
       "      <th>装修情况</th>\n",
       "      <th>建筑结构</th>\n",
       "      <th>供暖方式</th>\n",
       "      <th>梯户比例</th>\n",
       "      <th>产权年限</th>\n",
       "      <th>配备电梯</th>\n",
       "      <th>链家编号</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>天山小区（宁国路）</td>\n",
       "      <td>175</td>\n",
       "      <td>25736</td>\n",
       "      <td>2成交周期（天）</td>\n",
       "      <td>天山银海二手房成交</td>\n",
       "      <td>2室1厅1厨1卫</td>\n",
       "      <td>高楼层(共6层)</td>\n",
       "      <td>68㎡</td>\n",
       "      <td>南</td>\n",
       "      <td>1996</td>\n",
       "      <td>其他</td>\n",
       "      <td>砖混结构</td>\n",
       "      <td>集中供暖</td>\n",
       "      <td>一梯两户</td>\n",
       "      <td>70年</td>\n",
       "      <td>无</td>\n",
       "      <td>103106513612</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>大学路公寓</td>\n",
       "      <td>800</td>\n",
       "      <td>56530</td>\n",
       "      <td>339成交周期（天）</td>\n",
       "      <td>大学路二手房成交</td>\n",
       "      <td>3室2厅1厨2卫</td>\n",
       "      <td>中楼层(共8层)</td>\n",
       "      <td>141.52㎡</td>\n",
       "      <td>南</td>\n",
       "      <td>2000</td>\n",
       "      <td>精装</td>\n",
       "      <td>混合结构</td>\n",
       "      <td>集中供暖</td>\n",
       "      <td>一梯两户</td>\n",
       "      <td>70年</td>\n",
       "      <td>无</td>\n",
       "      <td>103103356463</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>华润中心悦府</td>\n",
       "      <td>677</td>\n",
       "      <td>47496</td>\n",
       "      <td>317成交周期（天）</td>\n",
       "      <td>湛山二手房成交</td>\n",
       "      <td>3室2厅1厨2卫</td>\n",
       "      <td>低楼层(共30层)</td>\n",
       "      <td>142.54㎡</td>\n",
       "      <td>南 北</td>\n",
       "      <td>2014</td>\n",
       "      <td>精装</td>\n",
       "      <td>钢混结构</td>\n",
       "      <td>集中供暖</td>\n",
       "      <td>两梯三户</td>\n",
       "      <td>70年</td>\n",
       "      <td>有</td>\n",
       "      <td>103103494849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>闽江路11号</td>\n",
       "      <td>130</td>\n",
       "      <td>24739</td>\n",
       "      <td>88成交周期（天）</td>\n",
       "      <td>新贵都二手房成交</td>\n",
       "      <td>2室0厅1厨1卫</td>\n",
       "      <td>高楼层(共7层)</td>\n",
       "      <td>52.55㎡</td>\n",
       "      <td>南 北</td>\n",
       "      <td>1984</td>\n",
       "      <td>简装</td>\n",
       "      <td>混合结构</td>\n",
       "      <td>集中供暖</td>\n",
       "      <td>一梯两户</td>\n",
       "      <td>70年</td>\n",
       "      <td>无</td>\n",
       "      <td>103105408584</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>东海一路</td>\n",
       "      <td>460</td>\n",
       "      <td>44223</td>\n",
       "      <td>25成交周期（天）</td>\n",
       "      <td>湛山二手房成交</td>\n",
       "      <td>3室2厅1厨2卫</td>\n",
       "      <td>低楼层(共6层)</td>\n",
       "      <td>104.02㎡</td>\n",
       "      <td>南 北</td>\n",
       "      <td>1994</td>\n",
       "      <td>精装</td>\n",
       "      <td>砖混结构</td>\n",
       "      <td>集中供暖</td>\n",
       "      <td>一梯两户</td>\n",
       "      <td>70年</td>\n",
       "      <td>无</td>\n",
       "      <td>103106149567</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9715</td>\n",
       "      <td>厚德花苑</td>\n",
       "      <td>30</td>\n",
       "      <td>4244</td>\n",
       "      <td>2成交周期（天）</td>\n",
       "      <td>莱西二手房成交</td>\n",
       "      <td>2室1厅1厨1卫</td>\n",
       "      <td>中楼层(共7层)</td>\n",
       "      <td>70.69㎡</td>\n",
       "      <td>南 北</td>\n",
       "      <td>2012</td>\n",
       "      <td>其他</td>\n",
       "      <td>未知结构</td>\n",
       "      <td>暂无数据</td>\n",
       "      <td>一梯两户</td>\n",
       "      <td>70年</td>\n",
       "      <td>暂无数据</td>\n",
       "      <td>103104634988</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9716</td>\n",
       "      <td>厚德花苑</td>\n",
       "      <td>35</td>\n",
       "      <td>4406</td>\n",
       "      <td>2成交周期（天）</td>\n",
       "      <td>莱西二手房成交</td>\n",
       "      <td>2室1厅1厨1卫</td>\n",
       "      <td>低楼层(共6层)</td>\n",
       "      <td>79㎡</td>\n",
       "      <td>南 北</td>\n",
       "      <td>2012</td>\n",
       "      <td>其他</td>\n",
       "      <td>未知结构</td>\n",
       "      <td>暂无数据</td>\n",
       "      <td>一梯两户</td>\n",
       "      <td>70年</td>\n",
       "      <td>暂无数据</td>\n",
       "      <td>103104678086</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9717</td>\n",
       "      <td>厚德花苑</td>\n",
       "      <td>30</td>\n",
       "      <td>4244</td>\n",
       "      <td>2成交周期（天）</td>\n",
       "      <td>莱西二手房成交</td>\n",
       "      <td>2室1厅1厨1卫</td>\n",
       "      <td>中楼层(共7层)</td>\n",
       "      <td>70.69㎡</td>\n",
       "      <td>南 北</td>\n",
       "      <td>2012</td>\n",
       "      <td>其他</td>\n",
       "      <td>未知结构</td>\n",
       "      <td>暂无数据</td>\n",
       "      <td>一梯两户</td>\n",
       "      <td>70年</td>\n",
       "      <td>暂无数据</td>\n",
       "      <td>103104634988</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9718</td>\n",
       "      <td>厚德花苑</td>\n",
       "      <td>35</td>\n",
       "      <td>4406</td>\n",
       "      <td>2成交周期（天）</td>\n",
       "      <td>莱西二手房成交</td>\n",
       "      <td>2室1厅1厨1卫</td>\n",
       "      <td>低楼层(共6层)</td>\n",
       "      <td>79㎡</td>\n",
       "      <td>南 北</td>\n",
       "      <td>2012</td>\n",
       "      <td>其他</td>\n",
       "      <td>未知结构</td>\n",
       "      <td>暂无数据</td>\n",
       "      <td>一梯两户</td>\n",
       "      <td>70年</td>\n",
       "      <td>暂无数据</td>\n",
       "      <td>103104678086</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9719</td>\n",
       "      <td>厚德花苑</td>\n",
       "      <td>30</td>\n",
       "      <td>4244</td>\n",
       "      <td>2成交周期（天）</td>\n",
       "      <td>莱西二手房成交</td>\n",
       "      <td>2室1厅1厨1卫</td>\n",
       "      <td>中楼层(共7层)</td>\n",
       "      <td>70.69㎡</td>\n",
       "      <td>南 北</td>\n",
       "      <td>2012</td>\n",
       "      <td>其他</td>\n",
       "      <td>未知结构</td>\n",
       "      <td>暂无数据</td>\n",
       "      <td>一梯两户</td>\n",
       "      <td>70年</td>\n",
       "      <td>暂无数据</td>\n",
       "      <td>103104634988</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>9720 rows × 17 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           楼盘名称  成交价   成交单价        成交周期         位置      房屋户型       所在楼层  \\\n",
       "0     天山小区（宁国路）  175  25736    2成交周期（天）  天山银海二手房成交  2室1厅1厨1卫   高楼层(共6层)   \n",
       "1         大学路公寓  800  56530  339成交周期（天）   大学路二手房成交  3室2厅1厨2卫   中楼层(共8层)   \n",
       "2        华润中心悦府  677  47496  317成交周期（天）    湛山二手房成交  3室2厅1厨2卫  低楼层(共30层)   \n",
       "3        闽江路11号  130  24739   88成交周期（天）   新贵都二手房成交  2室0厅1厨1卫   高楼层(共7层)   \n",
       "4          东海一路  460  44223   25成交周期（天）    湛山二手房成交  3室2厅1厨2卫   低楼层(共6层)   \n",
       "...         ...  ...    ...         ...        ...       ...        ...   \n",
       "9715       厚德花苑   30   4244    2成交周期（天）    莱西二手房成交  2室1厅1厨1卫   中楼层(共7层)   \n",
       "9716       厚德花苑   35   4406    2成交周期（天）    莱西二手房成交  2室1厅1厨1卫   低楼层(共6层)   \n",
       "9717       厚德花苑   30   4244    2成交周期（天）    莱西二手房成交  2室1厅1厨1卫   中楼层(共7层)   \n",
       "9718       厚德花苑   35   4406    2成交周期（天）    莱西二手房成交  2室1厅1厨1卫   低楼层(共6层)   \n",
       "9719       厚德花苑   30   4244    2成交周期（天）    莱西二手房成交  2室1厅1厨1卫   中楼层(共7层)   \n",
       "\n",
       "         建筑面积 房屋朝向  建成年代 装修情况  建筑结构  供暖方式  梯户比例 产权年限  配备电梯          链家编号  \n",
       "0         68㎡    南  1996   其他  砖混结构  集中供暖  一梯两户  70年     无  103106513612  \n",
       "1     141.52㎡    南  2000   精装  混合结构  集中供暖  一梯两户  70年     无  103103356463  \n",
       "2     142.54㎡  南 北  2014   精装  钢混结构  集中供暖  两梯三户  70年     有  103103494849  \n",
       "3      52.55㎡  南 北  1984   简装  混合结构  集中供暖  一梯两户  70年     无  103105408584  \n",
       "4     104.02㎡  南 北  1994   精装  砖混结构  集中供暖  一梯两户  70年     无  103106149567  \n",
       "...       ...  ...   ...  ...   ...   ...   ...  ...   ...           ...  \n",
       "9715   70.69㎡  南 北  2012   其他  未知结构  暂无数据  一梯两户  70年  暂无数据  103104634988  \n",
       "9716      79㎡  南 北  2012   其他  未知结构  暂无数据  一梯两户  70年  暂无数据  103104678086  \n",
       "9717   70.69㎡  南 北  2012   其他  未知结构  暂无数据  一梯两户  70年  暂无数据  103104634988  \n",
       "9718      79㎡  南 北  2012   其他  未知结构  暂无数据  一梯两户  70年  暂无数据  103104678086  \n",
       "9719   70.69㎡  南 北  2012   其他  未知结构  暂无数据  一梯两户  70年  暂无数据  103104634988  \n",
       "\n",
       "[9720 rows x 17 columns]"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 载入数据,查看空值等\n",
    "path ='2019-10-31all_data.csv'\n",
    "df = pd.read_csv(path,encoding='gbk')\n",
    "print(df.info())\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 删除无用列,以及替换空值\n",
    "df1 = df.copy().drop(['链家编号','供暖方式','配备电梯'],axis=1)\n",
    "df1.replace('暂无数据',np.nan,inplace=True)\n",
    "\n",
    "#取消科学技术法,并保留两位小数\n",
    "pd.set_option('display.float_format', lambda x: '%.2f' % x)\n",
    "\n",
    "#统一单价为万,与成交价一致,但是价格会出现以科学计数法显示\n",
    "df1.成交单价 = df1.成交单价/ 10000\n",
    "#将部分特征取数值部分\n",
    "df1.建筑面积 = df1.建筑面积.str.replace('㎡', '')\n",
    "df1.rename(columns={'建筑面积':'建筑面积(㎡)'},inplace=True)\n",
    "\n",
    "df1.产权年限=df1.产权年限.str.replace('年','')\n",
    "df1.rename(columns={'产权年限':'产权年限(年)'},inplace=True)\n",
    "\n",
    "#提取楼层数与所在楼层\n",
    "df1.所在楼层 = df.所在楼层.str.split(\"\\楼层\",expand=True)[0]\n",
    "df1 = df1.join(df.所在楼层.str.split(\"\\(共\",expand=True)[1].str.replace('层\\)',''))\n",
    "df1.rename(columns={1:'总楼层数'},inplace=True)\n",
    "df1.成交周期=df1.成交周期.str.split(\"\\成交\",expand=True)[0]\n",
    "df1.rename(columns={'成交周期':'成交周期(天)'},inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "#将数据转为数值型\n",
    "df1[['成交周期(天)','建筑面积(㎡)','建成年代','产权年限(年)','总楼层数']] = df1[['成交周期(天)','建筑面积(㎡)','建成年代','产权年限(年)','总楼层数']].apply(pd.to_numeric, errors='coerce')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将房间数量提取出来,并加入到原来的\n",
    "room_num = df1.房屋户型.str.extract('(?P<室>\\d+)室(?P<厅>\\d+)厅(?P<厨>\\d+)厨(?P<卫>\\d+)卫').astype(np.int8)\n",
    "df1=pd.merge(df1,room_num,how='left',left_index=True,right_index=True).drop('房屋户型',axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>成交价</th>\n",
       "      <th>成交单价</th>\n",
       "      <th>成交周期(天)</th>\n",
       "      <th>建筑面积(㎡)</th>\n",
       "      <th>建成年代</th>\n",
       "      <th>产权年限(年)</th>\n",
       "      <th>总楼层数</th>\n",
       "      <th>室</th>\n",
       "      <th>厅</th>\n",
       "      <th>厨</th>\n",
       "      <th>卫</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>count</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>8760.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mean</td>\n",
       "      <td>170.71</td>\n",
       "      <td>1.83</td>\n",
       "      <td>120.76</td>\n",
       "      <td>91.48</td>\n",
       "      <td>2007.09</td>\n",
       "      <td>66.09</td>\n",
       "      <td>14.55</td>\n",
       "      <td>2.19</td>\n",
       "      <td>1.37</td>\n",
       "      <td>1.01</td>\n",
       "      <td>1.17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>std</td>\n",
       "      <td>115.58</td>\n",
       "      <td>0.83</td>\n",
       "      <td>126.61</td>\n",
       "      <td>30.14</td>\n",
       "      <td>7.21</td>\n",
       "      <td>8.31</td>\n",
       "      <td>9.85</td>\n",
       "      <td>0.67</td>\n",
       "      <td>0.54</td>\n",
       "      <td>0.09</td>\n",
       "      <td>0.40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>min</td>\n",
       "      <td>14.00</td>\n",
       "      <td>0.26</td>\n",
       "      <td>1.00</td>\n",
       "      <td>35.11</td>\n",
       "      <td>1981.00</td>\n",
       "      <td>40.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25%</td>\n",
       "      <td>108.00</td>\n",
       "      <td>1.23</td>\n",
       "      <td>31.00</td>\n",
       "      <td>72.00</td>\n",
       "      <td>2003.00</td>\n",
       "      <td>70.00</td>\n",
       "      <td>6.00</td>\n",
       "      <td>2.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50%</td>\n",
       "      <td>140.00</td>\n",
       "      <td>1.66</td>\n",
       "      <td>77.00</td>\n",
       "      <td>87.34</td>\n",
       "      <td>2008.00</td>\n",
       "      <td>70.00</td>\n",
       "      <td>11.00</td>\n",
       "      <td>2.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75%</td>\n",
       "      <td>204.00</td>\n",
       "      <td>2.23</td>\n",
       "      <td>166.00</td>\n",
       "      <td>104.45</td>\n",
       "      <td>2012.00</td>\n",
       "      <td>70.00</td>\n",
       "      <td>22.00</td>\n",
       "      <td>3.00</td>\n",
       "      <td>2.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>max</td>\n",
       "      <td>920.00</td>\n",
       "      <td>5.65</td>\n",
       "      <td>558.00</td>\n",
       "      <td>270.00</td>\n",
       "      <td>2020.00</td>\n",
       "      <td>70.00</td>\n",
       "      <td>59.00</td>\n",
       "      <td>5.00</td>\n",
       "      <td>3.00</td>\n",
       "      <td>2.00</td>\n",
       "      <td>3.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          成交价    成交单价  成交周期(天)  建筑面积(㎡)    建成年代  产权年限(年)    总楼层数       室  \\\n",
       "count 9720.00 9720.00  9720.00  9720.00 8760.00  9720.00 9720.00 9720.00   \n",
       "mean   170.71    1.83   120.76    91.48 2007.09    66.09   14.55    2.19   \n",
       "std    115.58    0.83   126.61    30.14    7.21     8.31    9.85    0.67   \n",
       "min     14.00    0.26     1.00    35.11 1981.00    40.00    1.00    1.00   \n",
       "25%    108.00    1.23    31.00    72.00 2003.00    70.00    6.00    2.00   \n",
       "50%    140.00    1.66    77.00    87.34 2008.00    70.00   11.00    2.00   \n",
       "75%    204.00    2.23   166.00   104.45 2012.00    70.00   22.00    3.00   \n",
       "max    920.00    5.65   558.00   270.00 2020.00    70.00   59.00    5.00   \n",
       "\n",
       "            厅       厨       卫  \n",
       "count 9720.00 9720.00 9720.00  \n",
       "mean     1.37    1.01    1.17  \n",
       "std      0.54    0.09    0.40  \n",
       "min      0.00    1.00    1.00  \n",
       "25%      1.00    1.00    1.00  \n",
       "50%      1.00    1.00    1.00  \n",
       "75%      2.00    1.00    1.00  \n",
       "max      3.00    2.00    3.00  "
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 建成年代数据存在问题,有空值情况,使用平均值填充\n",
    "df1['建成年代'].fillna(2007,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>成交价</th>\n",
       "      <th>成交单价</th>\n",
       "      <th>成交周期(天)</th>\n",
       "      <th>建筑面积(㎡)</th>\n",
       "      <th>建成年代</th>\n",
       "      <th>产权年限(年)</th>\n",
       "      <th>总楼层数</th>\n",
       "      <th>室</th>\n",
       "      <th>厅</th>\n",
       "      <th>厨</th>\n",
       "      <th>卫</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>count</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "      <td>9720.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mean</td>\n",
       "      <td>170.71</td>\n",
       "      <td>1.83</td>\n",
       "      <td>120.76</td>\n",
       "      <td>91.48</td>\n",
       "      <td>2007.08</td>\n",
       "      <td>66.09</td>\n",
       "      <td>14.55</td>\n",
       "      <td>2.19</td>\n",
       "      <td>1.37</td>\n",
       "      <td>1.01</td>\n",
       "      <td>1.17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>std</td>\n",
       "      <td>115.58</td>\n",
       "      <td>0.83</td>\n",
       "      <td>126.61</td>\n",
       "      <td>30.14</td>\n",
       "      <td>6.85</td>\n",
       "      <td>8.31</td>\n",
       "      <td>9.85</td>\n",
       "      <td>0.67</td>\n",
       "      <td>0.54</td>\n",
       "      <td>0.09</td>\n",
       "      <td>0.40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>min</td>\n",
       "      <td>14.00</td>\n",
       "      <td>0.26</td>\n",
       "      <td>1.00</td>\n",
       "      <td>35.11</td>\n",
       "      <td>1981.00</td>\n",
       "      <td>40.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25%</td>\n",
       "      <td>108.00</td>\n",
       "      <td>1.23</td>\n",
       "      <td>31.00</td>\n",
       "      <td>72.00</td>\n",
       "      <td>2004.00</td>\n",
       "      <td>70.00</td>\n",
       "      <td>6.00</td>\n",
       "      <td>2.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50%</td>\n",
       "      <td>140.00</td>\n",
       "      <td>1.66</td>\n",
       "      <td>77.00</td>\n",
       "      <td>87.34</td>\n",
       "      <td>2007.00</td>\n",
       "      <td>70.00</td>\n",
       "      <td>11.00</td>\n",
       "      <td>2.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75%</td>\n",
       "      <td>204.00</td>\n",
       "      <td>2.23</td>\n",
       "      <td>166.00</td>\n",
       "      <td>104.45</td>\n",
       "      <td>2012.00</td>\n",
       "      <td>70.00</td>\n",
       "      <td>22.00</td>\n",
       "      <td>3.00</td>\n",
       "      <td>2.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>max</td>\n",
       "      <td>920.00</td>\n",
       "      <td>5.65</td>\n",
       "      <td>558.00</td>\n",
       "      <td>270.00</td>\n",
       "      <td>2020.00</td>\n",
       "      <td>70.00</td>\n",
       "      <td>59.00</td>\n",
       "      <td>5.00</td>\n",
       "      <td>3.00</td>\n",
       "      <td>2.00</td>\n",
       "      <td>3.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          成交价    成交单价  成交周期(天)  建筑面积(㎡)    建成年代  产权年限(年)    总楼层数       室  \\\n",
       "count 9720.00 9720.00  9720.00  9720.00 9720.00  9720.00 9720.00 9720.00   \n",
       "mean   170.71    1.83   120.76    91.48 2007.08    66.09   14.55    2.19   \n",
       "std    115.58    0.83   126.61    30.14    6.85     8.31    9.85    0.67   \n",
       "min     14.00    0.26     1.00    35.11 1981.00    40.00    1.00    1.00   \n",
       "25%    108.00    1.23    31.00    72.00 2004.00    70.00    6.00    2.00   \n",
       "50%    140.00    1.66    77.00    87.34 2007.00    70.00   11.00    2.00   \n",
       "75%    204.00    2.23   166.00   104.45 2012.00    70.00   22.00    3.00   \n",
       "max    920.00    5.65   558.00   270.00 2020.00    70.00   59.00    5.00   \n",
       "\n",
       "            厅       厨       卫  \n",
       "count 9720.00 9720.00 9720.00  \n",
       "mean     1.37    1.01    1.17  \n",
       "std      0.54    0.09    0.40  \n",
       "min      0.00    1.00    1.00  \n",
       "25%      1.00    1.00    1.00  \n",
       "50%      1.00    1.00    1.00  \n",
       "75%      2.00    1.00    1.00  \n",
       "max      3.00    2.00    3.00  "
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# one-hot处理离散值\n",
    "def get_dummies(df,columns):\n",
    "    '''\n",
    "    将数据中的离散值转为矩阵形式\n",
    "    columns为特征列表\n",
    "    '''\n",
    "    df = pd.get_dummies(df,columns=columns)\n",
    "    return df\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 对离散值进行处理\n",
    "columns=['所在楼层','房屋朝向','装修情况','产权年限(年)']\n",
    "df_dummies=get_dummies(df1,columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 9720 entries, 0 to 9719\n",
      "Data columns (total 43 columns):\n",
      "楼盘名称              9720 non-null object\n",
      "成交价               9720 non-null int64\n",
      "成交单价              9720 non-null float64\n",
      "成交周期(天)           9720 non-null int64\n",
      "位置                9720 non-null object\n",
      "建筑面积(㎡)           9720 non-null float64\n",
      "建成年代              9720 non-null float64\n",
      "建筑结构              9720 non-null object\n",
      "梯户比例              9720 non-null object\n",
      "总楼层数              9720 non-null int64\n",
      "室                 9720 non-null int8\n",
      "厅                 9720 non-null int8\n",
      "厨                 9720 non-null int8\n",
      "卫                 9720 non-null int8\n",
      "所在楼层_中            9720 non-null uint8\n",
      "所在楼层_低            9720 non-null uint8\n",
      "所在楼层_地下室(共11层)    9720 non-null uint8\n",
      "所在楼层_高            9720 non-null uint8\n",
      "房屋朝向_东            9720 non-null uint8\n",
      "房屋朝向_东 北          9720 non-null uint8\n",
      "房屋朝向_东 南          9720 non-null uint8\n",
      "房屋朝向_东 西          9720 non-null uint8\n",
      "房屋朝向_东北           9720 non-null uint8\n",
      "房屋朝向_东南           9720 non-null uint8\n",
      "房屋朝向_北            9720 non-null uint8\n",
      "房屋朝向_北 南          9720 non-null uint8\n",
      "房屋朝向_南            9720 non-null uint8\n",
      "房屋朝向_南 北          9720 non-null uint8\n",
      "房屋朝向_南 北 东        9720 non-null uint8\n",
      "房屋朝向_南 北 西        9720 non-null uint8\n",
      "房屋朝向_南 西          9720 non-null uint8\n",
      "房屋朝向_南 西 北        9720 non-null uint8\n",
      "房屋朝向_西            9720 non-null uint8\n",
      "房屋朝向_西北           9720 non-null uint8\n",
      "房屋朝向_西北 北         9720 non-null uint8\n",
      "房屋朝向_西南           9720 non-null uint8\n",
      "装修情况_其他           9720 non-null uint8\n",
      "装修情况_毛坯           9720 non-null uint8\n",
      "装修情况_简装           9720 non-null uint8\n",
      "装修情况_精装           9720 non-null uint8\n",
      "产权年限(年)_40        9720 non-null uint8\n",
      "产权年限(年)_50        9720 non-null uint8\n",
      "产权年限(年)_70        9720 non-null uint8\n",
      "dtypes: float64(3), int64(3), int8(4), object(4), uint8(29)\n",
      "memory usage: 1.0+ MB\n"
     ]
    }
   ],
   "source": [
    "df_dummies.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "xgboost预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBRegressor as XGBR\n",
    "from sklearn.ensemble import RandomForestRegressor as RFR\n",
    "from sklearn.linear_model import LinearRegression as LinearR\n",
    "from sklearn.model_selection import KFold, cross_val_score as CVS, train_test_split as TTS\n",
    "from sklearn.metrics import mean_squared_error as MSE\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[15:04:32] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:33] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:33] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:33] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:34] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9048122947375485"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X=df_dummies.drop(['建筑结构','位置','楼盘名称','梯户比例','成交价','成交单价'],axis=1)\n",
    "y=df_dummies.成交价\n",
    "\n",
    "Xtrain,Xtest,Ytrain,Ytest = TTS(X,y,test_size=0.3,random_state=420)\n",
    "\n",
    "reg = XGBR(n_estimators=100)\n",
    "\n",
    "CVS(reg,Xtrain,Ytrain,cv=5).mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_learning_curve(estimator,title, X, y,\n",
    "                        ax=None, #选择子图\n",
    "                        ylim=None, #设置纵坐标的取值范围\n",
    "                        cv=None, #交叉验证\n",
    "                        n_jobs=None #设定索要使用的线程\n",
    "                       ):\n",
    "    \n",
    "    from sklearn.model_selection import learning_curve\n",
    "    import matplotlib.pyplot as plt\n",
    "    import numpy as np\n",
    "    train_sizes, train_scores, test_scores = learning_curve(estimator, X, y\n",
    "                                                           ,shuffle=True\n",
    "                                                           ,cv=cv\n",
    "                                                           # ,random_state=420\n",
    "                                                           ,n_jobs=n_jobs)      \n",
    "    if ax == None:\n",
    "        ax = plt.gca()\n",
    "    else:\n",
    "        ax = plt.figure()\n",
    "    ax.set_title(title)\n",
    "    if ylim is not None:\n",
    "        ax.set_ylim(*ylim)\n",
    "    ax.set_xlabel(\"Training examples\")\n",
    "    ax.set_ylabel(\"Score\")\n",
    "    ax.grid() #绘制网格，不是必须\n",
    "    ax.plot(train_sizes, np.mean(train_scores, axis=1), 'o-'\n",
    "           , color=\"r\",label=\"Training score\")\n",
    "    ax.plot(train_sizes, np.mean(test_scores, axis=1), 'o-'\n",
    "           , color=\"g\",label=\"Test score\")\n",
    "    ax.legend(loc=\"best\")\n",
    "    return ax"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[15:04:34] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:34] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:34] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:35] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:35] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:35] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:35] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:35] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:36] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:36] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:36] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:36] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:37] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:37] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:37] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:38] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:38] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:38] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:38] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:38] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n"
     ]
    },
    {
     "data": {
      "image/png": "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TM+ePdm+fTsAI0eOZNKkScfqDx8+nB49enD22Wfz+eefA3DgwAGuvfZaOnfuzC233EJSUtKx5BXoL3/5C+3ataNTp0489NBDAPz4448MHDiQTp060blzZ7788ksAJkyYQIcOHejQoQOTJ08utm0ffPABPXv2pFu3blx//fUcOHDghD63QHYndRmNXTCW+Jh4hp13Yl9WYwxw+HD5yk/SunXruO2221ixYgXNmjVj/PjxLF26lJUrV/LRRx+xbt26Iuvs3buXCy64gJUrV9KzZ0+mTZsWctuqyuLFi5k4ceKxZDN58mSaNm3KypUruf/++1mxYkWR9X766Sdmz57N2rVrWbVqFQ8//DDg9FAuueQSVq1axbJly2jbti2LFy8mLS2NxYsXs2jRIv7+97+zatWqIm2Ljo5m/PjxfPLJJyxfvpxOnTrx3HPPnfTnZ2MxlcFXO7/izTVv8mDvB2kU18jvcIyputxf2AUOBl/J06qVc1gpWMuW4MFlwGeeeSbnnHPOsfk33niDl19+mdzcXLZu3cq6deto165doXVq167NpZc6Vyh2796dBQsWhNz2Nddcc6zOxo0bAVi4cOGxHkHHjh1p3759kfVOOeUUIiIiGDp0KJdffjlXXHEF4FzpNmPGDACioqKoV68eCxYs4NprryUuzrnf6qqrrmLhwoX079+/UNs+//xz1q1bR69evQA4cuQIffr0Kf8HFsQSRBmMWzCO2KhY7u95v9+hGFO9jR1b+BwEQFycU+6BOnXqHJv+5ptveO6551i8eDENGjTgxhtvDHn3d0zM8YE3IyMjyc3NDbntWrVqFanjnEItWXR0NEuXLuWjjz5ixowZ/M///A8ffugcXQ++0bCk7QW2TVUZMGAAr7/+eqnvXx52iKkUmT9nkrY6jbuS7qJJnSZ+h2NM9TZkCKSmOj0GEedvauoJn6Auj3379lG3bl3q1avHtm3bmDNnToW/R58+fXjrrbcAWLt2bchDWPv372ffvn1cccUVPPvss8cOQ/Xr148XXngBcG6y27dvH+effz7vvvsuBw8eJDs7m3/961/07du3yDZ79erFvHnz+O677wDnXMg333xz0u2xHkQpnljwBNER0TzQ64HSKxtjSjdkSKUkhGDdunWjXbt2dOjQgTPOOIPevXtX+Hvce++9/P73v6dTp0507NiRDh06UL9+/UJ1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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cv = KFold(n_splits=5, shuffle = True, random_state=42)\n",
    "plot_learning_curve(XGBR(n_estimators=100,random_state=420)\n",
    "                   ,\"XGB\",Xtrain,Ytrain,ax=None,cv=cv)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[15:04:40] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:40] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:40] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:40] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:42] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:42] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:42] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:43] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:43] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:44] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:44] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:45] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:45] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:46] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:47] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:48] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:48] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:49] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:50] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:51] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:52] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:53] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:54] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:55] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:56] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:57] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:58] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:04:59] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:00] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:02] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:03] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:04] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:05] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:07] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:08] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:10] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:11] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:13] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:14] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:16] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:18] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:20] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:21] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:23] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:25] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:27] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:29] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:31] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:33] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:35] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:37] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:43] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:46] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:48] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:51] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:54] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:56] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:05:59] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:01] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:04] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:06] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:09] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:12] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:15] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:19] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:22] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:25] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:29] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:33] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:36] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:40] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:47] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:52] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:06:57] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:02] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:05] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:09] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:12] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:16] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:19] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:23] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:27] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:30] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:34] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:37] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:45] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:49] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:53] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:07:57] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:00] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:04] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:08] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:11] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:15] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "1000 0.9998542901417092 1.0525381892175413e-09\n",
      "1000 0.9998542901417092 1.0525381892175413e-09\n",
      "1000 0.9998542901417092 1.0525381892175413e-09 2.228390099233255e-08\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 寻找合适的n_estimators\n",
    "axisx = range(50,1050,50)\n",
    "rs = []\n",
    "var = []\n",
    "ge = []\n",
    "for i in axisx:\n",
    "    reg = XGBR(n_estimators=i,random_state=420)\n",
    "    cvresult = CVS(reg,Xtrain,Ytrain,cv=cv)\n",
    "    #记录1-偏差\n",
    "    rs.append(cvresult.mean())\n",
    "    #记录方差\n",
    "    var.append(cvresult.var())\n",
    "    #计算泛化误差的可控部分\n",
    "    ge.append((1 - cvresult.mean())**2+cvresult.var())\n",
    "#打印R2最高所对应的参数取值，并打印这个参数下的方差\n",
    "print(axisx[rs.index(max(rs))],max(rs),var[rs.index(max(rs))])\n",
    "#打印方差最低时对应的参数取值，并打印这个参数下的R2\n",
    "print(axisx[var.index(min(var))],rs[var.index(min(var))],min(var))\n",
    "#打印泛化误差可控部分的参数取值，并打印这个参数下的R2，方差以及泛化误差的可控部分\n",
    "print(axisx[ge.index(min(ge))],rs[ge.index(min(ge))],var[ge.index(min(ge))],min(ge))\n",
    "plt.figure(figsize=(20,5))\n",
    "plt.plot(axisx,rs,c=\"red\",label=\"XGB\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[15:08:19] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:23] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:27] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:30] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:34] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9998401644829743"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#n_estimators取1000在进行一次测试\n",
    "reg = XGBR(n_estimators=1000,random_state=420)\n",
    "CVS(reg,Xtrain,Ytrain,cv=5).mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[15:08:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:44] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:47] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:52] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:52] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:53] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:56] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:08:59] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:04] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:04] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:06] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:08] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:11] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:15] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:16] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:17] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:20] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:23] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:27] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:28] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:29] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:31] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:34] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cv = KFold(n_splits=5, shuffle = True, random_state=42)\n",
    "plot_learning_curve(XGBR(n_estimators=1000,random_state=420)\n",
    "                   ,\"XGB\",Xtrain,Ytrain,ax=None,cv=cv)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[15:09:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:40] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:42] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:43] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:44] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:44] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:45] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:46] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:47] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:48] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:49] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:50] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:51] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:52] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:53] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:53] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:54] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:55] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:56] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:57] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:58] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:09:59] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:00] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:01] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:02] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:03] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:04] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:05] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:06] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:07] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:07] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:08] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:10] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:10] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:11] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:12] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:14] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:15] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:16] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:17] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:18] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:19] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:20] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:21] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:22] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:23] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:24] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:25] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:26] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:27] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:29] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:30] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:31] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:32] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:34] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:35] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:36] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:37] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:38] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:40] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:42] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:44] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:45] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:46] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:48] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:49] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:50] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:52] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:53] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:54] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:56] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:58] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:10:59] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:01] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:02] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:04] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:06] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:08] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:09] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:11] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:12] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:14] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:15] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:17] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:18] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:20] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:21] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:23] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:24] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:26] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:28] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:29] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:31] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:32] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:34] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:35] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:37] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "390 0.9898799202426384 1.9810879540859536e-06\n",
      "390 0.9898799202426384 1.9810879540859536e-06\n",
      "390 0.9898799202426384 1.9810879540859536e-06 0.00010439710224944641\n"
     ]
    },
    {
     "data": {
      "image/png": "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W9BERERERLogBUciIl2MtZZVq1bRcO21DF6xgh5eLx7g4/BwXImJNEycSI+//pXE5GQSnS5WREREREQcpeBIRKQLaCwuZseNNxIzbx7TgoJ4tbKSB4CfBAXxxNVXc/QVVzBw4EBtQRMRERERkW9RcCQi0kntnj+fmttvJ2nVKrq53fTDvwXt/H79mPDAA0yYMIGolBQuc7pQERERERFptxQciYh0EvtuQZs5k7SdO0nx+UgBPEBxqy1o5+oWNBERERERaSMFRyIiHVhjcTFrZs7kuZISFs2Zw1e7dgH+W9C29e6N66qryL7mGjJdLocrFRERERGRjkjBkYhIB7Prk094e/163n77bZ59+22OAl6KjuaUU04hPySE3Cuv1C1oIiIiIiJyUCg4EhFp5/ZtQXvmGdJ27CDV5+NugJwclowezcA+fah47DHCIiKcLlVERERERDoZBUciIu1QfUEBxbfeSsz8+aRUV5OL/2DrhqAgCnr3Zt7DD9N3/HjdgiYiIiIiIoeUgiMRkXbA5/OxatUqvn7oISa88grRHg998YdFleHh7BkxgoQ77yTp+OO1BU1ERERERA4bBUciIg4pKipi4VtvMf7mm3nf6+Xi5maOACYaw860NJpPO43s6dNJTE4m0eliRURERESkS1JwJCJymNQXFFD8hz8QuWABlbW1HNXUBECNMfTLyOCf99zDSSedRHhqKtkO1yoiIiIiIgIKjkREDhmf2832v/0N+8ILJBcUfGv7WWh4OPfddx8nn3wyMYMGMcwYhjldsIiIiIiIyH4UHImIHETFxcXsuvZasufNI7GhgdzA86ZW28+y7riDlO7ducHRSkVERERERL6bgiMRkR+hvr6eDQ88QPojj3BJXBwfbt3Ku8AQoCI6muoRI0i47TaSxo7V9jMREREREelwFByJiHwPPreb7ffdh+/553nN5eKPX3/NZW43jwJnJSYy/t57yRo1iqCRI0lxuUhxumAREREREZEfQcGRiMh3KHvvPWruuYf4/PxvbT8bFR3Ntddey8knnkjTkCFcnZHhaJ0iIiIiIiIHm4IjEZH9NNTVUXTVVUTMm0dKeTmp1pIK+ICKqCiqRowg4dZbOW7cOI5zulgREREREZFDSMGRiHR5Pp+PwgceYNfcufzR5WLJkiXUut2EALXBwRT17o3r0kvJvv56UkJDtf1MRERERES6DAVHItIl7Z4/nz333stdycm8/+GHfFJeztFAxcCBXHPNNayNi2PA//0fsRkZxDpdrIiIiIiIiEMUHIlIl9CwYwdFf/jDvu1nKdaSAti4OE4+/XS2ZmcTe8IJrD7lFKdLFRERERERaTcUHIlIp+Rzu9nx4IN4n3uO5K+/JsbjoS9g+fb2s39efz1BoaFOlysiIiIiItIuKTgSkU6j/P33WbF8Oa9u3kz2W29xd10dAM3GUJSSQuOECWTecQex2dnafiYiIiIiItIGCo5EpMPyud2sff11Xl6zhqVz5rBk40ZSgAXJyZw+YQKby8ro9rvfkXLKKWQ5XayIiIiIiEgHpOBIRDqUlpoaCm64geg33iC1qopc4P7gYI477jhWxcWRdNFF7Lr6aoKCgpwuVUREREREpMNTcCQi7V59QQFFU6cS/8EHJNXX7zurqCo8nN2jRrH7tdeIj493ukwREREREZFOR8GRiLRLlZWVbL36anq/8Qbxzc30A3xAeUwMNSefTOaDD5KQlUWC04WKiIiIiIh0YgqORKTdKF62jIarr2ZGUBB/X7OGh7xehgEliYnUn3cePe+7j9ToaFKdLlRERERERKSLUHAkIo7a8cQTfLZ0KX/dvJnw/HyWAONiY4m9+WZGTphA0KhRZLhcTpcpIiIiIiLSJSk4EpHDyud2U3jnnbiefZb0khKyARcQNGIEp02fzvbu3Tlz8mTOdLpQERERERERUXAkIodeS00NhTfdROTrr5NWWUlP/Idb1wYHs33wYGLuuINPTz/d6TJFRERERERkPwqOROSQaGhoYMGCBfS88koGlZbSh8BNaGFhVBxzDCn330+3oUOJdbpQERERERER+a8UHInIQVNZWcn6W29lwAsvMMpaNjc380poKGnR0VSNG0fWQw+RkJ2tm9BEREREREQ6iKC2dDLGjDfGbDLGbDXG3HKA9h7GmA+NMV8aYxYZYzIDz8cYY1a3+jQZY84KtOUaYz41xmwxxrxqjAk9uFMTkcOhbO5ctgwdyvSBA0lJSeGFp56iW1MTtx17LB988AHn1NWRUltLvzfeIDI72+lyRURERERE5Hv4zhVHxhgX8BgwDigCPjfGzLHWbmjV7T7gBWvt88aYscB04BfW2oXAkMA4CcBWYEHgnb8CD1prXzHG/B34FfDEQZqXiBxCRU8/jfvee0n7+mtSfT5SgZMiIth7002cfeaZmGHDmBwS4nSZIiIiIiIi8iO1ZavaCGCrtXYbgDHmFeBMoHVwNACYGvi+EHjzAOOcB7xnrW0wxhhgLPCzQNvzwJ9QcCTSLlmvl4I778Q1cybpxcVkBp43BgWxrXdvgqdNY/iUKQx3tEoRERERERE52NoSHGUAO1v9LgJG7tdnDXAuMAM4G4gxxiRaa/e06jMJeCDwPRGottZ6Wo2Z8T1rF5FDyON2s3jpUmbPns1djz1GT2v/fRPaoEHE/PnPpE2cSE+nCxUREREREZFDpi3BkTnAM7vf7xuBR40xlwCLgWLgm1AIY0w6MBiY/z3G/Obdy4HLAbJ1PorIIdXY2MiCBQtInDaNEdu2cRpAeDinZ2WRm5ND8r33Ej9ihG5CExERERER6SLaEhwVAVmtfmcCJa07WGtLgHMAjDHRwLnW2ppWXS4AZltrWwK/K4BuxpjgwKqj/xiz1dhPAU8B5OXlHTBcEpEfrubLLym7/noSly/nNz4fr7nd3BUWRt+oKN6cPp3R//d/REVFOV2miIiIiIiIOKAtt6p9DvQJ3IIWin/L2ZzWHYwxScaYb8a6FXh2vzEuAl7+5oe11uI/C+m8wKNfAm99//JF5IfYPW8eW/Ly2BsSQuxRR9F34UK6NTUx+aijWLBgATfX1pJSV8cp11yj0EhERERERKQL+84VR9b+//buPErK6kz8+PdhadQfKCC4ACKiLBJ1xKBjRsUNHeOwSISIBrc4UZI4iTOOE1CTTBw90agxZzyZzBGVSDACIqLJ6Kio4PYLCQbcICxKRFBkkcUWaSy480e9bSptNbTa3UVXfz/n9Kmq+963eN7TD7ernrr3VspFxOXkl5m1BO5OKb0WEdcBc1NKDwMnAT+OiER+qdq3q8+PiB7kZyzNrvHU3wMmR8T1wDzgrs99NZJqlbZtY8k3vkGXiRPZZ9s29gG2Am/tvz8fXXwxB/3whwypqCh1mJIkSZKkXUjkJ/80DQMGDEhz584tdRhSk/Ps7NkcNmgQHXI5csDygw+m5RVX0P2b3yRatix1eJIkSZKkEoqIF1NKA4odq8seR5KaqMU33cQ/zZzJ4zNn8kRFBQf270/3xx6jZ+fOpQ5NkiRJktQEWDiSytDLL7/Mq1/9KuctWsSJu+/OaTffzN9961vssccepQ5NkiRJktSEWDiSysiK8eN55vbb+dorr7B/u3Z8sW9f/umhh2jXu3epQ5MkSZIkNUEWjqQy8PaUKbT4xjfo+v77jAAWjh3LP191FR07dix1aJIkSZKkJszCkdSEvfvII2wbPZr9168HYMU++7D7tGn8xwknlDgySZIkSVI5sHAkNUFrn3mGD0eOpNvq1QC806EDLSdN4oAzzyxxZJIkSZKkcmLhSGpC1r/5JpuOP57uK1YA8G67dmwfP54u55xT4sgkSZIkSeWoRakDkLRz769fz/XXX8/Bhx9O5xUrWLfHHqy44w7227TJopEkSZIkqcE440jahW3evJmXhgxhwFNPcRcwcNgw3rjySg5zDyNJkiRJUiOwcCTtgqrWrOH+22/n3+68ky+98w53t27N/9x+O/0uu6zUoUmSJEmSmhELR9IuJFdZyRtnnEHP55/neOCQE07gu5Mns9fAgexV6uAkSZIkSc2OhSNpF7C9qoolgwfTc+ZMegObW7Rg64UXMvuuu4iIUocnSZIkSWqm3BxbKqG0bRuLhg/no913p8/MmWyLYNGIEey+dSu9777bopEkSZIkqaQsHEklkLZtY9H557OlooI+M2YQKbHojDOo2LKFPvffT7RsWeoQJUmSJEmycCQ1tlmzZvH1o46i96RJtN6+ncUDB9Li/ffp8+ijtKioKHV4kiRJkiR9zMKR1EiWXnstr7Zvz8knn8zja9fy3DnnsH3dOnrPnk2rtm1LHZ4kSZIkSZ9g4UhqYPPnz2fIkCEsvOEG+m3cyD1XXsnSpUs5YfJkKjp2LHV4kiRJkiTVysKR1ECW/+IXrN1jD37Xvz/PPfcci6+9ls1Ll3LBLbew++67lzo8SZIkSZJ2qlWpA5DKzcp776X1mDEcUFkJwPGHHsqyF16gffv2JY5MkiRJkqRPx8KRVE/e/c1v2H7BBXTZsAGAt/bbj7YPPshhxx5b4sgkSZIkSfpsLBxJn9PaWbPYMnIkXdeuBeDtjh2pmDyZ7qedVuLIJEmSJEn6fNzjSPqM3nvvPSYPGcLeJ59M17VreXfPPVk1bRpd162js0UjSZIkSVIZcMaR9CltWrCAWWPHcv7s2VRt2sQxHTtSccstdLv44lKHJkmSJElSvXLGkVRHH3zwAT/5yU+oPOwwBv/mNwweOJC5r7xCz3XrLBpJkiRJksqSM46knahavZrlp5/OFcuX88j69VT178/os87i3h/8oNShSZIkSZLUoCwcSbXYum4db/7DP3DQnDn0Aq7t2JGrn3uO4447rtShSZIkSZLUKFyqJtWw6qGHePOAA2jVqRO95sxha4sWLLnsMr60dq1FI0mSJElSs+KMIwlIuRxLx4xh70mT2LeqCoANFRWsPe88DrnzTnq1bFniCCVJkiRJanwWjtSsbdiwgXvuuYfjxo5lwJYtbAfe6tKF1j/7GfuPHEmHUgcoSZIkSVIJWThSs/Sn6dPZ6+tf5/rNm/mvjz7iir592bNLFw687z6677NPqcOTJEmSJGmXYOFIzUbVmjU8f+utfP/ZZ1n8wgusAr52yCFcMmUKRx11VKnDkyRJkiRpl2PhSGVv1fTpVH3nOxywciXHAat79uTqn/6UTSNH8nfdupU6PEmSJEmSdlkWjlSWtm/dyutjxrD3r3/98WbX69u0Ye2557Jo/HhatDL1JUmSJEnamRZ16RQRZ0TEoohYGhFjixw/MCKejIiXI2JWRHQrONY9Ih6PiIURsSAiemTtv4yIZRExP/s5sr4uSs3XxpdeYunhh7OtTRt6TZhA+6oqlnftyqpp0+i4ZQu9J0ywaCRJkiRJUh3ttHAUES2BnwNfBvoB50ZEvxrdbgEmppSOAK4DflxwbCJwc0rpUOAYYHXBsatSSkdmP/M/x3WomZs3bx7/ffLJ7HnkkRzy6qtsbdGCxYMG8dHq1Ry4YgX7n312qUOUJEmSJKnJqcvUi2OApSmlNwAiYjIwDFhQ0Kcf8M/Z/aeBGVnffkCrlNITACmlynqKW6Kqqoplgwez5KWXGLpmDXu1acMZnTrBlVfSY+xYepc6QEmSJEmSmri6LFXrCrxV8HhF1lboJaB6SsdwoF1E7A30BjZExPSImBcRN2czmKrdkC1vuy0i2nzGa1Azs/LJJxk3bhzdunWjw8yZnLhuHbfddht/XrWKHmvW0GPsJ1ZTSpIkSZKkz6AuhaMo0pZqPP5X4MSImAecCKwEcuRnNJ2QHT8a6AlclJ0zDuibtXcEvlf0H4+4NCLmRsTcNWvW1CFclaPtW7ey5KKLWN+mDV0GDeL5G2/k+OOPZ/GECbT98EOuuOIK2rdvX+owJUmSJEkqK3VZqrYCOKDgcTfg7cIOKaW3ga8ARERb4OyU0saIWAHMK1jmNgM4FrgrpfROdnpVREwgX1z6hJTSHcAdAAMGDKhZsFKZ2zhvHmtHj6b7ggX0ArYDb3btyuRf/pIugwaVOjxJkiRJkspaXWYc/QHoFREHRUQFMAp4uLBDRHSKiOrnGgfcXXBuh4jonD0+hWxvpIjYP7sN4Czg1c9zISovy66/nlV77cWeRx3FwQsWsLVlSxaddhofrV5NjxUrLBpJkiRJktQIdlo4SinlgMuBx4CFwNSU0msRcV1EDM26nQQsiojFwL7ADdm528jPJHoyIl4hv+xtfHbOvVnbK0An4Pp6uyo1SVu2bOFXEyawqVUrDvr+99l30yZWtW/Pshtv5P/lcvR5/HHadO688yeSJEmSJEn1IlJqOqu/BgwYkObOnVvqMFTP3pk2jbXXXMMp773H2rVrmbPbbnTo1Yt9Jk1iryOOKHV4kiRJkiSVtYh4MaU0oNixuixVk+rd9q1befyhhxgyZAjPjxzJYYsXM6ZvvFQ3PgAADhZJREFUX5544gmO3ryZXi+/bNFIkiRJkqQSq8vm2FK92TB3LusuvJDuCxbwNvCHfffl+O9+l3dPPZX/GDKk1OFJkiRJkqQCFo7UKN740Y/Y49Zb2ff992kPVLZsSf8RI1g+cSIVFRWlDk+SJEmSJBVh4UgNZsuqVSwfNYpuzz5Lz+3bScA7HTqwddw4elx1FX9T6gAlSZIkSdIOWThSvVu2bBnvDR5M/wUL6A1sBZYceST7TJpEly98odThSZIkSZKkOnJzbNWL7Vu3snj0aC4dOJCDDz6YZxYuZP1uu7H4sstoncvRa9489rJoJEmSJElSk+KMI30uuVyOyZMnM2vsWO5cuZIRFRXsd+21jLz0Uvbu1o29Sx2gJEmSJEn6zCwc6TPJffABbwwdSuULL3D+li0cccQRzBs4kJN+/nNO79Ch1OFJkiRJkqR6YOFIn0p1wajHU0/RG9gSwUO/+hWDzzuPFi1c+ShJkiRJUjnxnb7qJFdZyaJTTmF727b0fuoptkew6KyzqNiyhaGjR1s0kiRJkiSpDPluXzv0ccGoXTv6PP30XxWM+jz4IC0qKkodoiRJkiRJaiAWjlRULpfj3vHj2bbnnhaMJEmSJElqptzjSH8lV1nJyxdfzKiXXmLJkiV0b9uWfQYNoteUKfSxWCRJkiRJUrNi4UhAfobRfffdx17f+hZDKyv5ardufHH6dI4bNsz9iyRJkiRJaqYsHDVzucpKXh86lCfnz+fb69dzYr9+9Onbl+vuu8/laJIkSZIkNXMWjpqp6oLRQU8/TR+gQ6tW7D99OsOcYSRJkiRJkjJWCJqZot+SNnw4nT74gOHDh1s0kiRJkiRJH7NK0EwUKxgtHj48/y1p06e7LE2SJEmSJH2ChaMyl8vl+N+rr/7EDKOKqip6WzCSJEmSJEk74B5HZSpXWcns73+fMb/9LcuXLuWtVq1YP2QIvaZMoU/r1qUOT5IkSZIkNQHOOCozuVyOiRMn8laHDpz8s5/RrU0bpjz4IJ2qqvJL0iwaSZIkSZKkOnLGUZnIVVby+pAhXLNkCQ+sXMnV3btzwRe/yFNTpxKt/DVLkiRJkqRPz4pCE1ddMOo5axZ9gH9r25bRDz7IsGHDiIhShydJkiRJkpowC0dNVM2C0ZYI3hg+nKOnTiVatix1eJIkSZIkqQy4x1ETk6usZNHJJ5PataPPrFlsi2Dx2WfT5qOP6PPAAxaNJEmSJElSvbFw1ETkcjnmnH9+0YJR72nTLBhJkiRJkqR6Z+FoF5errGT6TTfRt29f/n3SJHIWjCRJkiRJUiOxcLSLyuVy3DNhAlv33JNjxo6lXbt2jJkxg90sGEmSJEmSpEbi5ti7mFxlJQtHjuQrixaxdNkyOnToQN9TT+WPU6f6LWmSJEmSJKlRWTjaReQqK3lj8GAOmj2bw4Hv7Lcf3WfMYMjQoRaMJEmSJElSSVg4KrHCglFvYEsEy84+m8snT3Y5miRJkiRJKin3OCqRXGUli086idSuHb1nz85/S9qIEflNr++/36KRJEmSJEkqOQtHjSyXy/HKmWdaMJIkSZIkSbu8OhWOIuKMiFgUEUsjYmyR4wdGxJMR8XJEzIqIbgXHukfE4xGxMCIWRESPrP2giJgTEUsiYkpEVNTXRe3Knn/+eRY++qgFI0mSJEmStMvbaeEoIloCPwe+DPQDzo2IfjW63QJMTCkdAVwH/Ljg2ETg5pTSocAxwOqs/SbgtpRSL2A9cMnnuZCmYuDAgez72GMWjCRJkiRJ0i6vLjOOjgGWppTeSCltBSYDw2r06Qc8md1/uvp4VmBqlVJ6AiClVJlS2hz5rwk7BZiWnXMPcNbnupImIiI48fTTLRhJkiRJkqRdXl0KR12Btwoer8jaCr0EnJ3dHw60i4i9gd7AhoiYHhHzIuLmbAbT3sCGlFJuB88pSZIkSZKkEqpL4SiKtKUaj/8VODEi5gEnAiuBHNAKOCE7fjTQE7iojs+Z/8cjLo2IuRExd82aNXUIV5IkSZIkSfWhLoWjFcABBY+7AW8XdkgpvZ1S+kpKqT9wTda2MTt3XrbMLQfMAI4C1gLtI6JVbc9Z8Nx3pJQGpJQGdO7c+VNcmiRJkiRJkj6PuhSO/gD0yr4FrQIYBTxc2CEiOkVE9XONA+4uOLdDRFRXfE4BFqSUEvm9kEZk7RcCD332y5AkSZIkSVJ922nhKJspdDnwGLAQmJpSei0irouIoVm3k4BFEbEY2Be4ITt3G/llak9GxCvkl6iNz875HvAvEbGU/J5Hd9XbVUmSJEmSJOlzi/zkn6ZhwIABae7cuaUOQ5IkSZIkqWxExIsppQHFjtVlqZokSZIkSZKaIQtHkiRJkiRJKsrCkSRJkiRJkoqycCRJkiRJkqSimtTm2BGxBniz1HHUk07A2lIHoV2KOaFizAvVZE6oGPNCNZkTKsa8UE3mhKodmFLqXOxAkyoclZOImFvbjuVqnswJFWNeqCZzQsWYF6rJnFAx5oVqMidUFy5VkyRJkiRJUlEWjiRJkiRJklSUhaPSuaPUAWiXY06oGPNCNZkTKsa8UE3mhIoxL1STOaGdco8jSZIkSZIkFeWMI0mSJEmSJBVl4agBRMQBEfF0RCyMiNci4rtZe8eIeCIilmS3HbL2iIj/jIilEfFyRBxV2itQfdtBTtwcEX/Kfu8PRkT7rL1HRHwYEfOzn/8u7RWoIewgL/49IlYW/P7PLDhnXDZWLIqIvy9d9GoIO8iJKQX58OeImJ+1O1Y0AxGxW0T8PiJeyvLiR1n7QRExJ3tdMSUiKrL2NtnjpdnxHqWMX/VvBzlxb/b34dWIuDsiWmftJ0XExoKx4gelvQI1hB3kxS8jYlnB7//IrN33IGVuBznxbEE+vB0RM7J2xwoV1arUAZSpHHBlSumPEdEOeDEingAuAp5MKd0YEWOBscD3gC8DvbKfvwV+kd2qfNSWE08A41JKuYi4CRhHPicAXk8pHVmieNU4assLgNtSSrcUdo6IfsAo4AtAF2BmRPROKW1r1KjVkIrmRErpnOoOEXErsLHgHMeK8lcFnJJSqswKAc9FxKPAv5AfKyZnRcNLyL+GuARYn1I6JCJGATcB59T25GqSasuJe4HRWZ9fA/9IPicAnk0pDW78UNWIassLgKtSStNq9Pc9SPkrmhMppROqO0TEA8BDBec4VugTnHHUAFJK76SU/pjdfx9YCHQFhgH3ZN3uAc7K7g8DJqa83wHtI2L/Rg5bDai2nEgpPZ5SymXdfgd0K1WManw7GCtqMwyYnFKqSiktA5YCxzR8pGosO8uJiAjgq8B9pYlQpZC9PqjMHrbOfhJwClD9RrDm64rq1xvTgFOz3FGZqC0nUkqPZMcS8Ht8XdGs7GCsqI3vQcrcznIi+5DqFGBGCcJTE2LhqIFl08P7A3OAfVNK70D+zQGwT9atK/BWwWkr2PGbRzVhNXKi0NeBRwseHxQR8yJidkScgMpakby4PJs2fndky1pxrGhWahkrTgDeTSktKWhzrGgGIqJltkRxNfnZqq8DGwo+fCgcDz4eK7LjG4G9GzdiNbSaOZFSmlNwrDVwPvC/Bad8KVuu8mhEfKGRw1Uj2UFe3JC9rrgtItpkbb6uaAZ2NFYAw8mviNlU0OZYoU+wcNSAIqIt8ABwRY3/jJ/oWqTNr7srQ7XlRERcQ36Jyr1Z0ztA95RSf/JLEX4dEXs2drxqHEXy4hfAwcCR5HPh1uquRU53rChDO/j7cS5/PdvIsaKZSClty5YkdiM/0/DQYt2yW8eKZqBmTkTEYQWH/wt4JqX0bPb4j8CBKaW/AW7H2QVlq5a8GAf0BY4GOvKXbREcK5qBnYwVNV9XOFaoKAtHDST7pOcB4N6U0vSs+d3q6Z/Z7eqsfQVwQMHp3YC3GytWNY5acoKIuBAYDHwtm1pOthRpXXb/RfKfLPdu/KjV0IrlRUrp3eyP/HZgPH9ZjuZY0QzsYKxoBXwFmFLd5ljR/KSUNgCzgGPJLyup3q+ycDz4eKzIju8FvNe4kaqxFOTEGQAR8UOgM/licnWfTdXLVVJKjwCtI6JT40erxlKYF9ky6JRSqgIm4OuKZqnIWLE3+Vz4n4I+jhUqysJRA8j2EbgLWJhS+mnBoYeBC7P7F/KXTcgeBi7IvtngWGBj9ZI2lYfaciIiziD/qc/QlNLmgvbOEdEyu9+T/KaFbzRu1GpoO8iLwv0FhgOvZvcfBkZF/huTDiKfF79vrHjV8Hbw9wNgEPCnlNKKgv6OFc1A9nuu/tbN3cnnwkLgaWBE1q3m64rq1xsjgKeqP5hQeaglJ/4UEf8I/D1wbvbhQ3X//ar3uYqIY8i/B1jX+JGrIe0gL6o/uA7ye6EVvq7wPUgZqy0nssMjgd+mlLYU9HesUFF+q1rDOI78uvJXsvWkAFcDNwJTI+ISYDn5/6wAjwBnkt/odjNwceOGq0ZQW078J9AGeCIbo3+XUhoDDASui4gcsA0Yk1Ly0+LyU1tenBv5r8pNwJ+BywBSSq9FxFRgAfmljd9OfqNauSmaE9mnfqP45KbYjhXNw/7APVmRsAUwNaX024hYAEyOiOuBeeSLjmS3v4qIpeRnGo0qRdBqULXlRA54E/j/2euK6Sml68gXEL+ZHf8QGGUxsSzVlhdPRURn8kvT5gNjsv6+Byl/RXMiOzaK/PvTQo4VKirMA0mSJEmSJBXjUjVJkiRJkiQVZeFIkiRJkiRJRVk4kiRJkiRJUlEWjiRJkiRJklSUhSNJkiRJkiQVZeFIkiRJkiRJRVk4kiRJkiRJUlEWjiRJkiRJklTU/wHaxGe/+uX0FQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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e+65h0QiMSgJFYlE/OVJkybR2NgIwKFDhygtLc3o5SVyJlJCSURERERERMatQCDgD68D/LmXUi677LIhj+/r6+PkyZP++rJlywiFQv767Nmz6e7u9pNRXV1dHD582F+HZNIrlVC67777aG5u5sorr6S3t5d77rknIxmVSkRFIhF/ua6ujrq6OhKJBPv27aOyspKSkpKMydVFTjcllERERERERER+T6FQKCOB1NDQkLF/6dKlOY91ztHb2+snfpxzXHvttVRUVPhlmpqaMnpHpYbr9fb2+sdefvnl1NXV0d3dzf33389VV11Fc3MzBw8e5N577x2UiEpPTkUiEWbOnElNTQ09PT20t7dTW1tLSUkJ/f39JBIJioqKlJSSQZRQEhERERERERkDZpbRO8rMmDFjhr8eiURYtmxZzuOdc8TjcT/ZE4lEWLVqFRMnTgSgpKSERYsWrMWzBAAACjlJREFUZSSgsiWlKisrqamp4fDhw6xbt47rr7+e6dOn09bWxoYNGwgEAoMSUunvzc3NVFdXc/z4cdrb22lsbCQajdLT00NfXx/RaFRJqQJkqUzo2Wz+/Plux44dY10NERERERERkbOKcw7nHIFAgN7eXg4ePMjEiRMpLi7myJEjvP76634iKj0plf7e2tpKfX09r7zyChs3buS2226jqqqK559/ns2bNwPkTEpFIhGWLl1KWVkZe/bs4d1336WlpYVgMMjBgwfp7OwkHA4TDocJhUIZy8FgcIx/e4XPzHY65+Zn26ceSiIiIiIiIiLjlJll9HCaNm2av6+6uprFixcP+1wf+tCHuPXWW/0he42NjYTD4UEJqNTysWPHiMfj/pC/3bt389RTT9HS0gLAzp072b59e86fFwwGCYVC3H777RQVFfH888/z9ttvs2rVKgC2b9/O4cOHByWi0pej0ShTp04FoKenh0AgQDgcHsFvcPxSQklEREREREREPrBIJMKkSZP89cmTJzN58uRhH79kyRK/dxLAokWLaGpqIh6PE4/H6evrG7Tc19fnlw8GgxlP/Nu7dy9tbW3E43H6+/uz/szS0lK+8IUvALBx40Y6OztZs2YNAN/73vfo6OjISEQNfK+srGTBggUA7Nq1i0gkwvnnnz/8X9pZTAklERERERERERlzZpbRO6i8vJzy8vJhH79w4UIWLlzory9fvtxfTiQSWZNS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\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#细化学习曲线,根据之前的学习曲线重新测试一下\n",
    "axisx = range(200,400,10)\n",
    "rs = []\n",
    "var = []\n",
    "ge = []\n",
    "for i in axisx:\n",
    "    reg = XGBR(n_estimators=i,random_state=420)\n",
    "    cvresult = CVS(reg,Xtrain,Ytrain,cv=cv)\n",
    "    rs.append(cvresult.mean())\n",
    "    var.append(cvresult.var())\n",
    "    ge.append((1 - cvresult.mean())**2+cvresult.var())\n",
    "print(axisx[rs.index(max(rs))],max(rs),var[rs.index(max(rs))])\n",
    "print(axisx[var.index(min(var))],rs[var.index(min(var))],min(var))\n",
    "print(axisx[ge.index(min(ge))],rs[ge.index(min(ge))],var[ge.index(min(ge))],min(ge))\n",
    "rs = np.array(rs)\n",
    "var = np.array(var)*0.01\n",
    "plt.figure(figsize=(20,5))\n",
    "plt.plot(axisx,rs,c=\"black\",label=\"XGB\")\n",
    "#添加方差线\n",
    "plt.plot(axisx,rs+var,c=\"red\",linestyle='-.')\n",
    "plt.plot(axisx,rs-var,c=\"red\",linestyle='-.')\n",
    "plt.legend()\n",
    "plt.show()\n",
    "#看看泛化误差的可控部分如何？\n",
    "plt.figure(figsize=(20,5))\n",
    "plt.plot(axisx,ge,c=\"gray\",linestyle='-.')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[15:11:40] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:42] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:43] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:44] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9616856792737785"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 用200重新测试一下\n",
    "reg = XGBR(n_estimators=200,random_state=420)\n",
    "CVS(reg,Xtrain,Ytrain,cv=5).mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[15:11:45] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:45] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:45] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:46] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:46] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:47] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:47] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:48] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:48] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:49] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:49] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:50] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:50] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:50] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:51] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:52] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:52] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:52] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:53] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:53] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:54] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:54] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:54] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:55] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:56] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEWCAYAAAB8LwAVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXhU5dn48e+dPUAIGCAIYdOiErYAEUFRqSuuCNS6oBYXolYtSu1b/emrrX1xqRpAwSoq1iWVWtqqVSwiEq0VZA27SEpBQtiRQCALSe7fH+ckTCYTsk4mmbk/1zXXnPOc55y5nyGce87yPEdUFWOMMcZbWKADMMYY0zxZgjDGGOOTJQhjjDE+WYIwxhjjkyUIY4wxPlmCMMYY45MlCGOMMT5ZgjCmjkSkjYhsFZEbPcriROR7EfmJO58qIh+JyA8iclBENojIFBFp7y6fICKlIpLvvraIyN2BapMxvliCMKaOVDUfSAOmi0hHt/j3wHJVnSsiZwOZwL+BM1S1HTAKKAEGemxqsaq2UdU2wE+A34vIoKZqhzE1EetJbUz9iMgfgWjgFeCvQD9V3SkiXwGrVPW+E6w7AbhDVUd4lC0Fpqnqn/wauDG1ZEcQxtTfA8BIYC7woJscWgPDcRJGrYnImcBpwPLGDtKY+rIEYUw9qeoPwHqgFfA3t7g9zv+rXeX1ROT37nWIIyLyqMcmhrnl+cBS4G1gc9NEb0zNLEEYU08ichPQE/gMeMYt/gEoA04ur6eq/+Neh/g7EOGxiSWq2s69BtEZ6As82QShG1MrliCMqQcR6QRMBSYCdwI/FZHzVPUI8A0wti7bU9XdOKelrmrsWI2pL0sQxtTPDOB9VV2kqjuB/wFeFZFod/o2EXnITSSISBLQq7qNiUgCMAbnlJUxzYIlCGPqSESuAUYAvyovU9XXgBzgMVX9CrgAOA/4TkQOAv/EufX1RY9NDS/vBwFsBPYC1d75ZExTs9tcjTHG+GRHEMYYY3yyBGGMMcYnSxDGGGN8sgRhjDHGp4iaq7QMHTp00J49ewY6jFo7cuQIrVu3DnQYTc7aHVpCtd3Qctq+YsWKfara0deyoEkQPXv2ZPnyljOMTWZmJiNHjgx0GE3O2h1aQrXd0HLaLiLbqltmp5iMMcb4ZAnCGGOMT5YgjDHG+GQJwhhjjE+WIIwxxvhkCcIY03xkZEDPnhAW5rxnZAQ6opBmCcIYf3J3eOdfcIHt8GqSkQFpabBtG6g672lp9p0FUND0gzCm2Snf4R09isDxHR7A+PGBjOw4VSgrg9JSKCk5/u453YD3jqtXw+7dtav/9NNw9Gjl+I4ehUmTICICWrVyXrGxvqdjYkAkMN9jkLIEYUxjU4UffoBf/cr3Du/nP4e1axttJ9zgdz/q2xgb2b8frr++dnXLE0Z1SaS2y2uajoxsjJY1XEYGPPIIfP89dO8OU6Y06o8PSxDG1JWq86t42zbYutV5L3+Vz+fnV7/+oUMwbRqEhzu/jOv7Hh3dsPXr+l6PdZatXMmZw4fXrn6fPs6OzlvXrvDpp05yLSio/F6X6QMHfC+vzzNxyo9oTpB8+hw+7OzAG5KIYmKc6zG+eByhAn45QrUEYYy3khLIza0+AXz/PRQVVV6nXTvo0QNOPRUuvNCZfuop2Lev6vZ79HC2EwKOHDzo7Phr48knK+/wwNlRPvMMJCf7J0BV59+ypiRTl4T0ww+Qm0vb/fthw4bjy4uL6xdjbKzvI5+VK6v+HR496hxRWIIwpp6KimD79uoTQE5O1VMvnTo5O/aBA2H0aGfa8xUfX/VzEhN97/CmTPFn61qu8p2aH0+ZVCHi/EqPiYH27Rt10994j8VUWlq/hFPdcu/kUM7XUVg9WYIwwefIkaqnfDznd+2qfFpBxDmN0aMHnHOOc7eR586/e3dnx15XHjs8/f57pCl2eC3d+PHB+/2Eh0ObNs6rMfTs6fxNe+vevXG2jyUI09KowsGDJ04A+/dXXicyErp1c3b2l15aNQEkJUFUlH/idXd4X7SQkT0DLWNtBo8sfITv876ne3x3plw4hfH9gzRhNNSUKX4/QrUEYZoXVdiz58QJ4PDhyuvExh7f2Q8ZUjUBnHyy8+vNNGsZazNI+0caR485O7xtedtI+4dz0dWShA9NcErOEoRpWqWlx8//+0oA27ZBYWHldeLjnR19z54wcmTlnX/PntChg93/3gIVlhSSV5hHXlEeeYV5TJ4/uSI5lDt67CiT/zmZbm270SqyFbERsc57ZGzFfGR4M7nlNBD8fErOEoSpm5ruuy4uPmECOO/776teAO7Y0dnZ9+sHV15Z9QJwu3ZN2kRTs6KSoood+8HCgxXT3u/fbvuWF/e8WKmsvH5xae3u6tlzdA/n//H8apeHS3iVpOFz3qO82jonmI+NjCUyLBJpRj9G/H1Kzq8JQkRGAdOBcOA1VX3aa3kPYDbQETgA3KSqOe6y7sBrQDdAgctVdas/4zU1yMiAiROdOynA2elPmAAzZzq/4Ldtc24P9b4A3KWLs6MfNoztw4fT47zzKl8AbgGPZQwmnjt3X+8HCw8eL6umXlFpNXfQeIiLiiNGYuhU2on4mHg6te5E75N6Ex8dT3xMfJX3Oz68g91HdlfZTmLrRDLGZlBQUsDRY0cpOOa+VzfvUX6o6BC78ndVqVNYUugj4pqFS3itkkpsRCw/7PmBj4s/rnUi8l5WUzJqilNyovXpJFKbDYuEA98BFwM5wDLgBlXd4FHnL8BHqvqmiFwA3KqqN7vLMoEpqrpARNoAZap61PtzyqWmpqo9crQBioth507YscN55eZWft+xA7KzfXcqCg+Hc889fsrH89d/t26VLgA3u3b7WWP/wqtp517l3XuHX8ude5uoNrSLaed7Z+5V5qteXFQc4WHhdfr39t7hAbSKbMWsq2Y1+jWIMi2jsKTwhMmmLonI1zqHjh7iGMcoKCmoV4xhEnbCo5l/f/9vn9vuEd+DrfdvrfXniMgKVU31tcyfRxBDgWxV3eIGMQcYDWzwqJMMPOBOLwLed+smAxGqugBAVU/QLdWcUFmZc1eP987ee3rv3qrrRkU5v/67doVBg2Dz5uo/Y9Ei/7ajBfL1C2/ihxPZnb+b83ucX/MpGh9ltfnl2yaqTaUddodWHTi1/akn3KF7vreNbkt4WNNf1C9PAk1xF1P5zrdVZCsSSGj07cPxH0NlWkZRSdGJk82xghMfIZVULs8vzq828Xyf13j9IPx5BPETYJSq3uHO3wycpar3etT5E/CNqk4XkbHAX4EOwLnAHUAx0Av4DHhIVUu9PiMNSANITEwcMmfOHL+0xR/y8/Np08D7ocMKCojet4/o/fuJ2rv3+PS+fc70vn1E7d9PWElJlXWL27enqEMHihMSKOrQwZl238unj7VtW+ni77Drrydmd9VTAIWJiSyp5XffGO1uzlSV3UW7yc7P5ulvn+ZI6ZE6rR8TFkObiDa0jmhN6/DWzntEa6csvPXxZR7LPZe1imhFuDSfO7aC/d/7RPzd9uuXXM/uIh+n5KITmTOs9vvCH//4xwE5gvB18sw7Gz0IzBCRCcCXwA6gxI3rXGAQ8D3wZ2AC8HqljanOAmaBc4qpJZ26OOGhd0mJ05nL1y9+z7JDh6qu26aN84u/SxfnV3/5tOd7585ERUVR5zv/n3/e533XMc8/X+vTCMF0iulY6TG+3fctWbuyyNqVxapdq8jalcUPhT/UuO77171f5dd82+i2RIQF130jwfTvXVf+bvvzCc/7PCX3/BXPM7J/43yuP/8ac3AuMJdLAnI9K6hqLjAWwL3OME5V80QkB1jlcXrqfWAYXgmixSkf5TM3l/ZLl8KWLb53/Lt3Vz3XHxHh3M/fpYszts1FF1Xd8XftCnFx/os/EEMhNBP5xfms3rW6UjJYt2ddxfn8mIgY+nfqz7XJ15LSOYWUzilcN/c6th/aXmVbPeJ7MPqM0U3dBBNkmuKUnD8TxDKgt4j0wjkyuB640bOCiHQADqhqGfAwzh1N5eu2F5GOqroXuADwzxXoxhout7DQ987ee9q9x3+g57oJCcd38ikpvnf8HTtWP6pjUwrmoRBcu/J3sWqnczSQtTuLVTtXkX0gG3UPgE+KPYlBnQdx39D7KpLB6R1Or/Lr/6mLnvL5C2/KhTYWk2kc4/uP92snQr8lCFUtEZF7gfk4t7nOVtX1IvIEsFxVPwRGAk+JiOKcYrrHXbdURB4EFopzn9cK4NVGD7I2w+WWljoXcKvb8Ze/HzhQdfsxMcd38GedVWnHv2rPHgZdeaVzVBAT0+hNMzUr0zKyD2RXSQaet1r2ateLlM4p3Dzg5opkkNQ2qVb3wjflRVdj/MGvJzxVdR4wz6vsMY/pucDcatZdAAzwZ3w88ojvB7pMnAgvvujs+HfurNqxKyzMGamza1c45RQYMaLqL/4uXZwOXtXsSPIyM6FXL/+0y1RRWFLIuj3rKpLBql2rWLN7DUeOOReRI8Ii6NuxL6N+NIpBnQeR0jmFgZ0H0i6mYZ30yn/hhfK5eNNyBdcVsbqqbljcggJo2xbOOMP3jj8x0bkmYJqlAwUHnCSwc1XFUcG3+76l1L0JLi4qjpTOKdw26LaKZJDcMZnoiOgAR25M8xLae7nu3X0Pl9ujh/MEK9OsqSrb8rZVSQaeF4a7xnUlpXMK15xxTUUy6NW+F2HSDK7nGNPMhXaCaILhck3jOFZ6jI37NlZKBlm7sjhYeBBwOj6dnnA6I7qPIKVzCoM6D2Jg54F0at0pwJEb03KFdoII4ds2m7NDRYdYs3tNpWSwbs+6isHdYiNiGZA4gOv6XleRDPon9qdVZD0e6mOMqVZoJwgIids2mytVZWf+ziodzbIPZFfU6dCqA4M6D2LSWZMqkkHvhN5B16HMmObI/peZJlFaVsrmA5v5fM/n/POzf1Ykgz1H9lTUOaX9KQzqPIifDfxZRTLoEtelWQ2vbEwosQRh6qQ2o5MWHCtg7Z61lU4Rrdm9pqLDWGRYJH079eWK3ldU9C0YmDiQ+Jj4QDTJGFMNSxCm1qobnXTd7nUktEqoOCr4dt+3lGkZAG2j25LSOYWJgyeS0jmFkpwSbrnsFqLC/fQMaGNMo7EEYWrtkYWPVHkkZEFJAU//23kOVFLbJFI6pzCuz7iKU0Q92/WsdIoo82CmJQdjWghLEKbWqhtnXhD2/GoPHVp1aOKIjDH+ZL2FTK11j+9ebbklB2OCjyUIU2uTzppUpcxGJzUmeFmCMLX234P/JYwwusZ1RRB6xPfwy/OCjTHNg12DMLXyQ8EPzF41m5sH3swfr/ljoMMxxjQBO4IwtTJrxSyOHDvCA8MeCHQoxpgmYgnC1Ki4tJgXlr7Ahb0uZGDngTWvYIwJCnaKydToL+v/Qu7hXF69qvEf6meMab78egQhIqNEZJOIZIvIQz6W9xCRhSKyRkQyRSTJY1mpiGS5rw/9GaepnqqSviSdMzqcwagfjQp0OMaYJuS3IwgRCQdmAhcDOcAyEflQVTd4VHsOeEtV3xSRC4CngJvdZQWqmuKv+EztfLntS1buXMkrV75iD9kxJsT483/8UCBbVbeoajEwBxjtVScZWOhOL/Kx3ARY+pJ0EmITuHnAzTVXNsYEFX9eg+gKbPeYzwHO8qqzGhgHTAfGAHEikqCq+4EYEVkOlABPq+r73h8gImlAGkBiYiKZmZmN3gh/yc/Pb/bxbj+6nX9s+gc3db+Jb/79TaNssyW02x+s3aEnGNruzwThaxB/9Zp/EJghIhOAL4EdOAkBoLuq5orIKcDnIrJWVf9TaWOqs4BZAKmpqTpy5MhGDN+/MjMzae7x3vPxPUSGR/L7a39P5zadG2WbLaHd/mDtDj3B0HZ/JogcoJvHfBKQ61lBVXOBsQAi0gYYp6p5HstQ1S0ikgkMAiolCOM/BwoO8EbWG4zvP77RkoMxpmXx5zWIZUBvEeklIlHA9UClu5FEpINIxZXPh4HZbnl7EYkurwOcA3he3DZ+9sryVygoKbCOccaEML8lCFUtAe4F5gMbgfdUdb2IPCEiV7vVRgKbROQ7IBEoH/WtD7BcRFbjXLx+2uvuJ+NHxaXFvLj0RS459RL6J/YPdDjGmADxa0c5VZ0HzPMqe8xjei4w18d6XwO2ZwqQP6/7Mzvzd/LG6DcCHYoxJoDsxnZTSXnHuOSOyVxy6iWBDscYE0A21IapJHNrJlm7snjtqtcqPSrUGBN67AjCVJK+JJ2OrToyfoA948GYUGcJwlTYtG8TH333EfeceQ8xETGBDscYE2CWIEyFaUumER0ezd1n3h3oUIwxzYAlCAPAvqP7eHP1m9w84GY6te4U6HCMMc2AJQgDHO8Yd/+w+wMdijGmmbAEYSgqKWLGshmM+tEo+nbqG+hwjDHNhCUIw5x1c9iVv4vJwyYHOhRjTDNiCSLElXeM69epHxedclGgwzHGNCPWUS7ELfzvQtbsXsPsq2dbxzhjTCV2BBHi0henk9g6kRv73xjoUIwxzYwliBC2Ye8GPsn+hHvOvIfoiOhAh2OMaWYsQYSwaUumERMRw12pdwU6FGNMM2QJIkTtPbKXt1a/xS0DbqFj646BDscY0wxZgghRf1j+B4pKi6xjnDGmWpYgQlBhSSEzl83k8t6X06djn0CHY4xppvyaIERklIhsEpFsEXnIx/IeIrJQRNaISKaIJHktbysiO0Rkhj/jDDV/Wvsn9hzZYx3jjDEn5LcEISLhwEzgMiAZuEFEkr2qPQe8paoDgCeAp7yW/w74wl8xhiJVJX1xOgMTB3JBrwsCHY4xphnz5xHEUCBbVbeoajEwBxjtVScZWOhOL/JcLiJDgETgUz/GGHIWbFnA+r3rmTx8snWMM8ackD97UncFtnvM5wBnedVZDYwDpgNjgDgRSQB+AJ4HbgYurO4DRCQNSANITEwkMzOzsWL3u/z8/IDE++iaR0mISuDk/ScH5PMD1e5As3aHnmBouz8ThK+fp+o1/yAwQ0QmAF8CO4AS4OfAPFXdfqJfuao6C5gFkJqaqiNHjmx41E0kMzOTpo533Z51LPtiGVMumMLF517cpJ9dLhDtbg6s3aEnGNruzwSRA3TzmE8Ccj0rqGouMBZARNoA41Q1T0SGA+eKyM+BNkCUiOSrapUL3ab2pi2ZRmxELHcOuTPQoRhjWgB/JohlQG8R6YVzZHA9UGnAHxHpABxQ1TLgYWA2gKqO96gzAUi15NAwu/N3886ad7ht0G0ktEoIdDjGmBbAbxepVbUEuBeYD2wE3lPV9SLyhIhc7VYbCWwSke9wLkhP8Vc8oc46xhlj6sqvw32r6jxgnlfZYx7Tc4G5NWzjj8Af/RBeyCg4VsBLy17iqtOu4rSE0wIdjjGmhbCe1CEgY20Ge4/uZfJw6xhnjKk9SxBBrrxj3KDOgzi/x/mBDscY04LYE+WC3Pz/zGfjvo28PeZt6xhnjKkTO4IIcumL0+kS14Wf9v1poEMxxrQwliCC2Nrda1mwZQH3Db2PqPCoQIdjjGlhLEEEsalLptIqshVpQ9ICHYoxpgWyBBGkduXvImNtBrem3MpJsScFOhxjTAtkCSJIvbTsJY6VHmPSWZMCHYoxpoWyBBGEjh47ykvLXuLq06+md0LvQIdjjGmhLEEEobdXv83+gv3WMc4Y0yCWIIJMmZYxdclUhpw8hHO7nxvocIwxLZh1lAsyn2z+hE37N5ExNsM6xhljGsSOIIJM+pJ0ktomcW3ytYEOxRjTwlmCCCJZu7L4/L+f84uhvyAyPDLQ4RhjWjhLEEFk6pKptI5szcQhEwMdijEmCFiCCBK5h3N5d+273D7odtrFtAt0OMaYIODXBCEio0Rkk4hki0iVR4aKSA8RWSgia0QkU0SSPMpXiEiWiKwXkbv8GWcwmLl0JiVlJUwaZh3jjDGNw28JQkTCgZnAZUAycIOIJHtVew54S1UHAE8AT7nlO4GzVTUFOAt4SES6+CvWlu5I8RFeXvEyY/qM4ZT2pwQ6HGNMkKh1ghCRESJyqzvdUUR61bDKUCBbVbeoajEwBxjtVScZWOhOLypfrqrFqlrklkfXJc5Q9NbqtzhQcIDJw6xjnDGm8dSqH4SIPA6kAqcDbwCRwDvAOSdYrSuw3WM+B+dowNNqYBwwHRgDxIlIgqruF5FuwMfAj4BfqWquj7jSgDSAxMREMjMza9OcZiE/P79R4i3TMp5c9iRnxJ1B8X+KydzS8G36U2O1u6WxdoeeoGi7qtb4ArIAAVZ5lK2pYZ1rgdc85m8GXvSq0wX4G7AKJ0nkAPE+6iwFEk/0eUOGDNGWZNGiRY2ynQ+//VD5DTpn7ZxG2Z6/NVa7Wxprd+hpKW0Hlms1+9XanropdjekACLSuhbr5ADdPOaTgEpHAaqaq6pjVXUQ8IhbluddB1gP2LgRPqQvSad7fHfGJY8LdCjGmCBT2wTxnoi8ArQTkYnAZ8CrNayzDOgtIr1EJAq4HvjQs4KIdBCR8hgeBma75UkiEutOt8c5lbWplrGGjJU7V5K5NZNfDP0FEWE2aooxpnHVaq+iqs+JyMXAIZzrEI+p6oIa1ikRkXuB+UA4MFtV14vIEziHNB8CI4GnRESBL4F73NX7AM+75QI8p6pr69684DZ1yVTaRLXhjsF3BDoUY0wQqjFBuLerzlfVi4ATJgVvqjoPmOdV9pjH9Fxgro/1FgAD6vJZoWbHoR3MWTeHe8+8l/iY+ECHY4wJQjWeYlLVUuCoiNheqBmZsXQGZVrGL876RaBDMcYEqdqeuC4E1orIAuBIeaGq2t4pAPKL83l5xcuM7TOWXu1r6o5ijDH1U9sE8bH7Ms3Am1lvcrDwoHWMM8b4VW0vUr/p3ol0mlu0SVWP+S8sU53SslKmfTONYUnDGN5teKDDMcYEsdr2pB4JvAlsxbmrqJuI/ExVv/RfaMaXj777iOwD2Tx5wZOBDsUYE+Rqe4rpeeASVd0EICKnAe8CQ/wVmPEtfUk6PeJ7MKbPmECHYowJcrXtKBdZnhwAVPU7nPGYTBNanrucL7d9yaSzJlnHOGOM39V2L7NcRF4H3nbnxwMr/BOSqU764nTaRrfl9sG3BzoUY0wIqO0RxN044yH9ApgEbADsIT5NaHvedt5b/x4TB0+kbXTbQIdjjAkBtT2CiACmq2o6VPSujvZbVKaKF5e+CMB9Q+8LcCTGmFBR2yOIhUCsx3wszoB9pgkcLjrMrBWz+EnyT+jRrkegwzHGhIjaJogYVc0vn3GnW/knJOPtjaw3yCvKY/Jw6xhnjGk6tU0QR0RkcPmMiKQCBf4JyXgqLStl2pJpnNPtHIZ2HRrocIwxIaS21yDuB/4iIrk4Dw3qAlznt6hMhQ82fcB/D/6X5y55LtChGGNCzAmPIETkTBHprKrLgDOAPwMlwD+B/zZBfCEvfXE6vdr1YvTpowMdijEmxNR0iukVoNidHg78P2Am8AMwy49xGeCbnG/49/Z/c/+w+wkPCw90OMaYEFPTKaZwVT3gTl8HzFLVvwJ/FZEs/4Zmpi6ZSnx0PLem3BroUIwxIaimI4hwESlPIhcCn3ssq83T6EaJyCYRyRaRh3ws7yEiC0VkjYhkikiSW54iIotFZL27LOSud2w7uI25G+aSNiSNuOi4QIdjjAlBNSWId4EvROQDnLuW/gUgIj8C8k60otuZbiZwGZAM3CAiyV7VngPeUtUBwBPAU275UeAWVe0LjAKmiUi7WrcqCFjHOGNMoJ3wKEBVp4jIQuBk4FNVVXdRGFDTnmsokK2qWwBEZA4wGmeYjnLJwAPu9CLgffdzv/OIIVdE9gAdgYO1aVRLd6joEK+ufJWf9v0p3eK7BTocY0yIqvE0kaou8VH2na+6XroC2z3mc4CzvOqsBsYB04ExQJyIJKjq/vIKIjIUiAL+4/0BIpIGpAEkJiaSmZlZi7Cah/z8/GrjnZszl0NFhzg/6vwW1abaOFG7g5m1O/QERdtV1S8v4FrgNY/5m4EXvep0Af4GrMJJEjlAvMfyk4FNwLCaPm/IkCHakixatMhn+bHSY9pzWk89d/a5TRtQE6mu3cHO2h16WkrbgeVazX7Vnw8VyAE8z48kAbleySkXGAsgIm2Acaqa5863xXkO9qPq4ygmWL3/7ftsPbiVqZdODXQoxpgQV9uhNupjGdBbRHq5z7O+HvjQs4KIdBCR8hgeBma75VHA33EuYP/FjzE2O+mL0zm1/alcddpVgQ7FGBPi/JYgVLUEuBeYD2wE3lPV9SLyhIhc7VYbCWwSke+ARGCKW/5T4Dxggohkua8Uf8XaXCzevpjFOYutY5wxplnw63MrVXUeMM+r7DGP6bnAXB/rvQO848/YmqOpS6bSLqYdE1ImBDoUY4zx6ykmUwdbD27lrxv/yp1D7qRNVJtAh2OMMZYgmosXvnmBMAnj3qH3BjoUY4wBLEE0C3mFeby28jWu63sdSW2TAh2OMcYAliCahddWvsbh4sP2xDhjTLNiCSLASspKmP7NdEb2HMngkwfXvIIxxjQRSxAB9tcNf2X7oe1MHmZHD8aY5sUSRACpKs8vfp7eJ/XmitOuCHQ4xhhTiSWIAPp6+9csy13GA8MeIEzsn8IY07zYXimA0pekc1LsSdwy8JZAh2KMMVVYggiQHQU7+PvGv3PXkLtoHdU60OEYY0wVliAC5G87/kZEWAT3DL0n0KEYY4xPliAC4GDhQebtnMcN/W+gS1yXQIdjjDE+WYIIgFdXvEphWSEPDHug5srGGBMgliCa2LHSY7yw9AUGtRtESuegH8HcGNOCWYJoYnM3zCXnUA7XJl0b6FCMMeaELEE0IVUlfUk6pyeczlknnRXocIwx5oQsQTShr77/iuW5y61jnDGmRfDrXkpERonIJhHJFpGHfCzvISILRWSNiGSKSJLHsn+KyEER+cifMTal9CXpJMQmcPPAmwMdijHG1MhvCUJEwoGZwGVAMnCDiCR7VXsOeEtVBwBPAE95LHsWCJo9afaBbD749gPuTr2bVpGtAh2OMcbUyJ9HEEOBbFXdoqrFwBxgtFedZGChO73Ic7mqLgQO+zG+JjV9yXQiwyOtY5wxpsWI8BlIZEMAABp8SURBVOO2uwLbPeZzAO8rs6uBccB0YAwQJyIJqrq/Nh8gImlAGkBiYiKZmZkNjdkvDh87zGsrXuOCjhfw7fJv+ZZvyc/Pb7bx+pO1O7SEarshONruzwQhPsrUa/5BYIaITAC+BHYAJbX9AFWdBcwCSE1N1ZEjR9YrUH975qtnKCwr5JkxzzAgcQAAmZmZNNd4/cnaHVpCtd0QHG33Z4LIAbp5zCcBuZ4VVDUXGAsgIm2Acaqa58eYmlxxaTEvLH2Bi065qCI5GGNMS+DPaxDLgN4i0ktEooDrgQ89K4hIB5GK+z0fBmb7MZ6A+Mv6v5B7OJdfDv9loEMxxpg68VuCUNUS4F5gPrAReE9V14vIEyJytVttJLBJRL4DEoEp5euLyL+AvwAXikiOiFzqr1j9pbxjXHLHZC49tcWFb4wJcf48xYSqzgPmeZU95jE9F5hbzbrn+jO2pvDlti9ZuXMlr171KiK+LskYY0zzZd15/Sh9STodW3VkfP/xgQ7FGGPqzBKEn3y3/zv+sekf/PzMnxMbGRvocIwxps4sQfjJtCXTiAqP4u7UuwMdijHG1IslCD/Yf3Q/f8z6IzcNuInENomBDscYY+rFEoQfvLLiFQpKCuyJccaYFs0SRCMrKinixaUvcumpl9K3U99Ah2OMMfXm19tcQ9Gf1/+ZXfm7ePOaNwMdijHGNIgdQTQiVSV9cTp9O/bl4lMuDnQ4xhjTIHYE0YgWbV3E6t2ref3q161jnDGmxbMjiEaUvjidTq07cWP/GwMdijHGNJgliEby7b5v+Xjzx9xz5j3ERMQEOhxjjGkwSxCNZNqSaUSHR1vHOGNM0LAE0Qj2Hd3Hm6vf5JaBt9CxdcdAh2OMMY3CEkQjeHn5yxSWFHL/sPsDHYoxxjQaSxANVFRSxIylM7jsR5eR3DE50OEYY0yjsQTRQO+ue5fdR3YzefjkQIdijDGNyhJEA5R3jOvfqT8X9row0OEYY0yj8muCEJFRIrJJRLJF5CEfy3uIyEIRWSMimSKS5LHsZyKy2X39zJ9x1tfC/y5k7Z61TB4+2TrGGWOCjt8ShIiEAzOBy4Bk4AYR8T5J/xzwlqoOAJ4AnnLXPQl4HDgLGAo8LiLt/RVrfaUvTqdzm87c0O+GQIdijDGNzp9HEEOBbFXdoqrFwBxgtFedZGChO73IY/mlwAJVPaCqPwALgFF+jLXONuzdwCfZn3DvmfcSHREd6HCMMabR+XMspq7Ado/5HJwjAk+rgXHAdGAMECciCdWs29X7A0QkDUgDSExMJDMzs7Fir9Fz3z1HdFg0/Yr61etz8/PzmzTe5sLaHVpCtd0QHG33Z4LwdVJeveYfBGaIyATgS2AHUFLLdVHVWcAsgNTUVB05cmQDwq29vUf28tlXn3HroFsZfbH3QVHtZGZm0lTxNifW7tASqu2G4Gi7PxNEDtDNYz4JyPWsoKq5wFgAEWkDjFPVPBHJAUZ6rZvpx1jr5A/L/0BRaZF1jDPGBDV/JohlQG8R6YVzZHA9UGmYUxHpABxQ1TLgYWC2u2g+8KTHhelL3OUBV1hSyMxlM7nytCs5vcPpgQ7HmIA7duwYOTk5FBYWVlkWHx/Pxo0bAxBV4DW3tsfExJCUlERkZGSt1/FbglDVEhG5F2dnHw7MVtX1IvIEsFxVP8Q5SnhKRBTnFNM97roHROR3OEkG4AlVPeCvWOsiY00Ge47sYfIw6xhnDEBOTg5xcXH07Nmzyu3ehw8fJi4uLkCRBVZzaruqsn//fnJycujVq1et1/PrA4NUdR4wz6vsMY/pucDcatadzfEjimZBVUlfkk5K5xRG9hwZ6HCMaRYKCwt9JgfTfIgICQkJ7N27t07r2RPl6uDT/3zKhr0beOuat+w/gzEe7P9D81effyMbaqMO0pekc3Kbk7mu33WBDsUYY/zOEkQtrduzjk//8yn3Db2PqPCoQIdjTMuVkQE9e0JYmPOekdGgze3fv5+UlBRSUlLo3LkzXbt2rZgvLi6u1TZuvfVWNm3adMI6M2fOJKOBsbY0doqplqYunkqryFbcmXpnoEMxpuXKyIC0NDh61Jnfts2ZBxg/vl6bTEhIICsrC4Df/OY3tGnThgcffLBSHVVFVQkL8/2b+I033qjxc+655556xedvNbWtIewIohZ25+/mnbXvMGHgBE6KPSnQ4RjTfN1/P4wcWfGKvfzySvPcfvvx5FDu6FGn3LOe5+v++vU3ys7Opl+/ftx1110MHjyYnTt3kpaWRmpqKn379uWJJ56oqDtixAiysrIoKSmhXbt2PPTQQwwcOJDhw4ezZ88eAB599FGmTZtWUf+hhx5i6NChnH766Xz99dcAHDlyhHHjxjFw4EBuvfVWUlNTK5KXp1/96lckJyczYMAAfv3rXwOwa9cuRo8ezYABAxg4cCDffPMNAL///e/p168f/fr148UXX6y2bZ988gnDhw9n8ODBXHfddRw5cqRe35snSxC18NKylzhWeoxJwyYFOhRjWraiorqVN9CGDRu4/fbbWbVqFV27duXpp59m+fLlrF69mgULFrBhw4Yq6+Tl5XH++eezevVqhg8fzuzZvm+mVFWWLl3Ks88+W5FsXnzxRTp37szq1auZPHkyq1atqrLe7t27mTdvHuvXr2fNmjU8/LDTxeuee+7h4osvZs2aNaxYsYI+ffqwdOlSMjIyWLp0KYsXL+all15izZo1VdoWGRnJ008/zcKFC1m5ciUDBgxg+vTpDf7+7BRTDQqOFfDS8pe46vSrOC3htECHY0zz5v7CLlfg3RegZ0/ntJK3Hj3AD+MWnXrqqZx55pkV8++++y6vv/46JSUl5ObmsmHDBpKTKw8yHRsby2WXXQbAkCFD+Ne//uVz22PHjq2os3XrVgC++uqriiOC/v3707dv3yrrnXTSSYSFhTFx4kSuuOIKrrzySsAZmmPOnDkARERE0LZtW/71r38xbtw4WrVqBcA111zDV199xSWXXFKpbV9//TUbNmzg7LPPBqC4uJgRI0bU/QvzYgmiBu+seYd9R/dZxzhjGsOUKZWvQQC0auWU+0Hr1q0rpjdv3sz06dNZunQp7dq146abbvLZ+zsq6vhNKOHh4ZSUlPjcdnR0dJU6qlWGjKsiMjKS5cuXs2DBAubMmcMf/vAHPv30U6Dqragn2p5n21SVUaNG8fbbb9f4+XVhp5hOoEzLmLpkKoNPHsx5Pc4LdDjGtHzjx8OsWc4Rg4jzPmtWvS9Q18WhQ4eIi4ujbdu27Ny5k/nz5zf6Z4wYMYL33nsPgPXr1/s8hXX48GEOHTrElVdeydSpUytOQ/34xz/m5ZdfBqC0tJRDhw5x3nnn8fe//52CggLy8/P54IMPOPfcc6ts8+yzz+aLL75gy5YtgHMtZPPmzQ1ujx1BnMD87Pls3LeRd8a8Yx2BjGks48c3SULwNnjwYJKTk+nXrx+nnHIK55xzTqN/xn333cctt9zCgAED6N+/P/369SM+Pr5Snby8PMaOHUtRURFlZWWkp6cDMGPGDCZOnMgrr7xCREQEr7zyCkOHDuWGG26oOJV09913079/f7KzsyttMzExkddff53rrruu4tbeJ598kt69ezeoPVKbQ6KWIDU1VZcvX96o27z47YvZuHcjWyZtafS+D8EwFHB9WLuDz8aNG+nTp4/PZc1pPKKmUFJSQklJCTExMaxatYqxY8eyefNmIiKax29xX/9WIrJCVVN91W8eUTdDa3av4bMtn/H0hU9bxzhjTK3k5+dz4YUXUlJSQmlpacXRQEvVciP3s6lLptI6sjVpQ9ICHYoxpoVo164dK1asAILj6MkuUvuw8/BOMtZkcNug22gf277mFYwxJghZgvDhpWUvUVJWwqSzrGOcMSZ0WYLwcvTYUf6w/A9cc8Y1nHrSqYEOxxhjAsavCUJERonIJhHJFpGHfCzvLiKLRGSViKwRkcvd8igReUNE1orIahEZ6c84Pb29+m32F+xn8nDrGGeMCW1+SxAiEg7MBC4DkoEbRCTZq9qjwHuqOgjnmdUvueUTAVS1P3Ax8LyI+P1op7xj3JldzuScbo1/j7QxBjLWZtBzWk/CfhtGz2k9yVgb+OG+AWbPns2uXbsaFEuw8eddTEOBbFXdAiAic4DRgGfXQgXautPxQK47nQwsBFDVPSJyEEgFlvoxXj7Z/Amb9m/i3XHvWsc4Y/wgY20Gaf9I4+gxZ6iNbXnbSPuHc6fg+P7+G+67NmbPns3gwYPp3LlzveKoi9LSUsLDw/3+OQ3lzwTRFdjuMZ8DnOVV5zfApyJyH9AauMgtXw2MdpNKN2CI+14pQYhIGpAGTk/CzAYO9vW/q/+XTtGd6LCnQ4O3VZP8/Hy/f0ZzZO0OPvHx8Rw+fBiAXy/6NWv3rq1YpqqVfmwt27mMotLKI7cePXaU2z+4nZeXvuxz+/079ueZHz9Tq1iKioqIjIysiCcjI4NXX32VY8eOMXToUJ5//nnKysq4++67Wbt2LarKhAkT6NSpE1lZWVx77bXExsayaNGiSmMyzZgxgzfffJPIyEiSk5N57bXXOHz4MA8++CCrV69GRHjkkUe48sormTNnDtOmTaOsrIwrrriCxx9/nJKSEnr16sXEiRP5/PPPeeaZZ4iIiODRRx/lyJEjdOjQgZdffplOnTrV7kuvp8LCwjr9HfozQfj6Ce7dbfsG4I+q+ryIDAfeFpF+wGygD7Ac2AZ8DVQZMUtVZwGzwOlJ3ZCeqlm7slj1xSqevfhZLjr7oppXaKBg7ll7Itbu4LNx48aK+/2joqIq/TL2/qXsnRw8y6v7RR0VFVXr/gTR0dFER0cTFxfHunXr+Oc//8k333xDREQEaWlpfPzxx5x66qnk5eWxfv16AA4ePEi7du147bXXmDFjBikpKVW2+8ILL7Bt2zaioqI4ePAgcXFx/OY3v6FLly786U9/QlU5ePAgeXl5TJkyheXLlxMWFsaYMWP44osvGDVqFHl5eQwfPpxnn32WoqIifvzjH/Phhx/SoUMHMjIyeOaZZ5g1a1at2llfMTExDBo0qNb1/ZkgcnB+9ZdL4vgppHK3A6MAVHWxiMQAHVR1D/BAeSUR+Rpo+MhTJ5C+OJ02UW24Y/Ad/vwYY4LatFGVh/v27izWc1pPtuVVHe67R3wPMidkNmosn332GcuWLSM11RlFoqCggG7dunHppZeyadMmJk2axOWXX84ll1xS47b69u3LTTfdxOjRo7nmmmsqtv/+++8Dziis7du35/PPP+eCCy6gQ4cOHD58mBtvvJEvv/ySUaNGERUVxZgxYwAnqa5fv56LLnJ+jJaWlpKUlNSo7W8M/rzwuwzoLSK9RCQK5yL0h151vgcuBBCRPkAMsFdEWolIa7f8YqBEVasOi9gIMtZmkJSexNtr3kYQPt78sT8+xhgDTLlwCq0iW1UqaxXZiikXNv5w36rKbbfdRlZWFllZWWzatIn//d//JSEhgTVr1jBixAheeOEF7ryz5scIz58/n7vuuoulS5eSmppKaWlpldNn5Z9ZndjY2Ir6qsqAAQMqYlu7di2ffPJJwxrsB35LEKpaAtwLzAc24tyttF5EnhCRq91qvwQmishq4F1ggjrfcCdgpYhsBH4N3OyPGMsvmO04vAOAw8WHSftHWoPvqjDG+Da+/3hmXTWLHvE9EIQe8T2YddWsel+gPpGLLrqI9957j3379gHO3U7ff/89e/fuRVW59tpr+e1vf8vKlSsBiIuLq7h24am0tJScnBwuuOACnn32Wfbu3cvRo0e55JJLmDFjBuDs8H/44QeGDRvGokWL2L9/PyUlJcyZM4fzzz+/yjaTk5PZsWMHS5c6l1WLi4srTnk1J34di0lV5wHzvMoe85jeAFS5n1RVtwKn+zM2gEcWPlJxN0W5o8eO8sjCR/zyB2uMcZJEU/z/6t+/P48//jgXXXQRZWVlREZG8vLLLxMeHs7tt99ecQTwzDPOBfBbb72VO+64g9jYWJYuXVpxkbqkpIQbb7yRw4cPU1ZWxq9//Wvi4uJ4/PHH+fnPf06/fv0IDw/nd7/7HVdffTVPPPEEI0eOpLS0lNGjR3PFFVdUeehQdHQ0c+fO5Re/+AWHDx+mpKSEX/7ylz6fQBdIIT3cd9hvw9Aq181BEMoeL2us0HwK5ouWJ2LtDj423LdvzbHtdR3uO6SH2uge371O5cYYE0pCOkE05QUzY4xpaUI6QTTlBTNjglmwnKoOZvX5Nwr5BwY11QUzY4JVTEwM+/fvJyEhwYaoaaZUlf379xMTE1On9UI+QRhjGiYpKYmcnBz27t1bZVlhYWGdd0rBorm1PSYmps6d8SxBGGMaJDIykl69evlclpmZWaehHYJJMLQ9pK9BGGOMqZ4lCGOMMT5ZgjDGGONT0PSkFpG9OEODtxQdgH2BDiIArN2hJVTbDS2n7T1UtaOvBUGTIFoaEVleXff2YGbtDi2h2m4IjrbbKSZjjDE+WYIwxhjjkyWIwPHvswWbL2t3aAnVdkMQtN2uQRhjjPHJjiCMMcb4ZAnCGGOMT5YgGpGIzBaRPSKyzqPsJBFZICKb3ff2brmIyAsiki0ia0RksMc6P3PrbxaRnwWiLbUlIt1EZJGIbBSR9SIyyS0P9nbHiMhSEVnttvu3bnkvEfnGbcOfRSTKLY9257Pd5T09tvWwW75JRC4NTIvqRkTCRWSViHzkzodKu7eKyFoRyRKR5W5Z8P6tq6q9GukFnAcMBtZ5lP0eeMidfgh4xp2+HPgEEGAY8I1bfhKwxX1v7063D3TbTtDmk4HB7nQc8B2QHALtFqCNOx0JfOO25z3gerf8ZeBud/rnwMvu9PXAn93pZGA1EA30Av4DhAe6fbVo/2TgT8BH7nyotHsr0MGrLGj/1gMeQLC9gJ5eCWITcLI7fTKwyZ1+BbjBux5wA/CKR3mles39BXwAXBxK7QZaASuBs3B6zka45cOB+e70fGC4Ox3h1hPgYeBhj21V1GuuLyAJWAhcAHzktiPo2+3G6StBBO3fup1i8r9EVd0J4L53csu7Ats96uW4ZdWVN3vu6YNBOL+mg77d7mmWLGAPsADnV/BBVS1xq3i2oaJ97vI8IIEW2G5gGvA/QJk7n0BotBtAgU9FZIWIpLllQfu3bs+DCBxfj97SE5Q3ayLSBvgrcL+qHjrBk8WCpt2qWgqkiEg74O9AH1/V3PegaLeIXAnsUdUVIjKyvNhH1aBqt4dzVDVXRDoBC0Tk2xPUbfFttyMI/9stIicDuO973PIcoJtHvSQg9wTlzZaIROIkhwxV/ZtbHPTtLqeqB4FMnPPM7USk/IeXZxsq2ucujwcO0PLafQ5wtYhsBebgnGaaRvC3GwBVzXXf9+D8KBhKEP+tW4Lwvw+B8rsUfoZzjr68/Bb3TodhQJ57eDofuERE2rt3Q1ziljVL4hwqvA5sVNV0j0XB3u6O7pEDIhILXARsBBYBP3Grebe7/Pv4CfC5OiegPwSud+/26QX0BpY2TSvqTlUfVtUkVe2Jc9H5c1UdT5C3G0BEWotIXPk0zt/oOoL5bz3QF0GC6QW8C+wEjuH8Srgd53zrQmCz+36SW1eAmTjnrdcCqR7buQ3Idl+3BrpdNbR5BM7h8Rogy31dHgLtHgCsctu9DnjMLT8FZ0eXDfwFiHbLY9z5bHf5KR7besT9PjYBlwW6bXX4DkZy/C6moG+328bV7ms98IhbHrR/6zbUhjHGGJ/sFJMxxhifLEEYY4zxyRKEMcYYnyxBGGOM8ckShDHGGJ8sQZgWRUQS3JE0s0Rkl4js8JiPquU23hCR02uoc4+IjG+cqJsHEflKRFICHYdpOew2V9NiichvgHxVfc6rXHD+tst8rhiiROQr4F5VzQp0LKZlsCMIExRE5Ecisk5EXsYZWfVkEZklIsvFeV7DYx51vxKRFBGJEJGDIvK0OM91WOyOsYOI/J+I3O9R/2lxnv+wSUTOdstbi8hf3XXfdT+ryi90ETlTRL5wB3j7REQSRSTSnR/h1nlWjj9T4rcisqy8PW7CK48jXUT+JSIbRCRVRP4uzjMFfuPxPawXkbfFeW7Be25Pb++YLnPbu1Kc5zW09ohjgzjPL3imUf+RTItjCcIEk2TgdVUdpKo7cMboTwUGAheLSLKPdeKBL1R1ILAYp4erL6KqQ4FfAeXJ5j5gl7vu0zgj2VZeSSQamA6MU9UhwDvA71T1GHArMEtELsEZ0+j/3NWmq+qZQH83vlEemyxQ1XNxhjd5H7jLrZdWPvSH+z3MVNX+QCFwp1dMnXCeW3Chqg7G6Q0+SUQScXrB91XVAcBT1XwXJkRYgjDB5D+qusxj/gYRWYlzRNEHZ8fprUBVP3GnV+A8z8OXv/moMwJnwDpUtXz4BW99gL7AZ+IMDf4Q7kBtqrrGXf8DnOEWjrnrXCgiS3GGdDjfXb/ch+77WmCtqu5W1UKc5xQkucv+q6pL3Ol33Dg9nY3zXXztxjTebdMBnCG8XxWRMcCRar4LEyJsuG8TTCp2aCLSG5gEDFXVgyLyDs64QN6KPaZLqf7/RJGPOtWOae5BgDXur35f+uE8I6H81FYrYAbOU/p2iMj/ecVdHkeZx3T5fHlc3hcWvecF+Keq3lwlWJFUnAc+XQ/cjTOQnAlRdgRhglVb4DBwSJwhmP3xzOOvgJ8CiEh/fB+hbAC6ishQt16UiPR1p68D2uAMejdTRNoCsTg7+33uyKHj6hFXLxE5052+wY3T09fA+SJyihtHaxHp7X5eW1X9CHgAH6fMTGixIwgTrFbi7JzX4Tzz999++IwXgbdEZI37eetwjgYqqGqRiPwEeMHdAUcAz4vIXpxrDiPdI4VXgKmqeruIvOluaxvO0/nqaj0wUUReB74FZnnFtFtEbgf+7HFr8P8DCoC/uddNwnCeO21CmN3makw9ifMAnAhVLXRPaX0K9Nbjj94MREw/AuaqqvV3MA1mRxDG1F8bYKGbKAS4M5DJwZjGZkcQxhhjfLKL1MYYY3yyBGGMMcYnSxDGGGN8sgRhjDHGJ0sQxhhjfPr/Q8L9+IXC//kAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cv = KFold(n_splits=5, shuffle = True, random_state=42)\n",
    "plot_learning_curve(XGBR(n_estimators=200,random_state=420)\n",
    "                   ,\"XGB\",Xtrain,Ytrain,ax=None,cv=cv)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[15:11:56] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:57] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:57] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:58] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:58] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:58] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:11:59] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:00] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:00] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:01] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:02] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:02] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:03] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:04] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:04] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:05] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:06] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:07] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:07] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:08] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:09] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:10] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:11] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:11] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:12] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:13] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:14] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:15] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:16] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:17] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:17] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:18] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:19] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:20] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:21] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:22] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:23] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:24] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:25] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:27] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:28] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:29] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:30] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:32] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:33] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:34] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:35] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:36] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:38] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:40] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:43] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:44] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:45] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:46] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:47] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:48] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:50] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:51] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:52] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:53] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:54] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:55] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:56] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:57] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:58] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:12:59] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:00] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:02] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:03] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:04] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:05] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:06] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:07] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:08] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:09] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:10] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:11] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:12] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:13] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:14] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:14] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:15] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:16] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:17] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:18] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:19] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:20] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:21] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:22] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:23] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:24] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:25] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:26] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:27] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:28] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:29] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:29] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:31] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "0.21052631578947367 0.9751052039806508\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#寻找合适的subsample解决一下过拟合问题\n",
    "axisx = np.linspace(0,1,20)\n",
    "rs = []\n",
    "for i in axisx:\n",
    "    reg = XGBR(n_estimators=200,subsample=i,random_state=420)\n",
    "    rs.append(CVS(reg,Xtrain,Ytrain,cv=cv).mean())\n",
    "print(axisx[rs.index(max(rs))],max(rs))\n",
    "plt.figure(figsize=(20,5))\n",
    "plt.plot(axisx,rs,c=\"green\",label=\"XGB\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[15:13:32] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:32] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:33] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:34] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:34] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:35] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:35] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:36] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:37] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:37] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:38] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:40] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:42] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:43] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:43] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:44] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:45] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:46] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:46] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:47] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:48] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:49] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:49] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:50] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:51] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:52] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:53] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:54] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:55] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:56] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:57] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:58] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:13:59] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:00] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:01] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:02] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:03] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:04] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:05] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:06] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:08] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:09] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:10] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:11] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:13] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:14] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:15] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:16] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:17] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:18] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:19] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:20] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:21] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:22] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:23] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:24] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:25] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:26] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:27] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:28] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:29] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:30] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:31] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:32] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:34] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:35] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:36] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:37] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:38] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:39] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:40] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:41] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:42] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:43] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:44] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:45] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:46] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:47] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:48] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:50] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:50] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:51] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:52] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:53] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:53] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:54] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:55] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:56] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:57] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:57] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:58] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:59] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:14:59] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:15:00] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[15:15:01] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "0.2 0.9692046303615264 1.4578638153834192e-05\n",
      "0.39999999999999997 0.9671287750015694 1.3296221242102288e-05\n",
      "0.2 0.9692046303615264 1.4578638153834192e-05 0.0009629334293240572\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABI4AAAEvCAYAAAAjE4p1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3hUZcLG4d87mUx6SAgBQgkk9CKgBAQEBVddEAFBXUDBxdUFRXZtoKhgR3BRF8tasKxdFAVERcXGx+paCIpCqKGHhJCEkD5JZub9/piAyCJFyiThua9rLjJzzpl5TnSz+OQtxlqLiIiIiIiIiIjIgRyBDiAiIiIiIiIiItWTiiMRERERERERETkoFUciIiIiIiIiInJQKo5EREREREREROSgVByJiIiIiIiIiMhBqTgSEREREREREZGDcgY6wNGoV6+ebd68eaBjiIiIiIiIiIjUGsuXL8+11sYf7FiNKo6aN29OampqoGOIiIiIiIiIiNQaxpitv3VMU9VEREREREREROSgVByJiIiIiIiIiMhBqTgSEREREREREZGDqlFrHImIiIiIiIiInAiVlZVkZGTgdrsDHeWECQ0NpUmTJgQHBx/xNSqOREREREREROSUl5GRQVRUFM2bN8cYE+g4x521lry8PDIyMkhKSjri6zRVTUREREREREROeW63m7i4uFpZGgEYY4iLizvqEVUqjkREREREREREoNaWRnv9nvtTcSQiIiIiIiIiUg1s376dpKQkdu/eDUB+fj5JSUls3bqVDRs2cNFFF9GiRQu6du1Kv379WLp0KQAvvfQS8fHxdOnShQ4dOnDppZdSWlp6XDKpOBIRERERERERqQaaNm3Kddddx+TJkwGYPHkyY8eOpUGDBgwcOJCxY8eyceNGli9fzhNPPMGmTZv2XTt8+HBWrFhBWloaLpeLt95667hk0uLYIqcCa2HnTjzr1rHnp5+o06cPwWecEehUIiIiIiIicoCbbrqJrl27MmvWLL766iueeOIJXn31VXr27MngwYP3ndexY0c6duz4P9d7PB5KSkqIjY09LnlUHInUFh4PeL2UAxlffAHPPsuSLl3YtG0bF33wAT1zcnAC9apO3x0RQfGIETSdMgXTvHnAYouIiIiIiMgvgoODmTlzJv3792fx4sW4XC7S0tI44zC/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\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 继续细化曲线\n",
    "axisx = np.linspace(0.05,1,20)\n",
    "rs = []\n",
    "var = []\n",
    "ge = []\n",
    "for i in axisx:\n",
    "    reg = XGBR(n_estimators=180,subsample=i,random_state=420)\n",
    "    cvresult = CVS(reg,Xtrain,Ytrain,cv=cv)\n",
    "    rs.append(cvresult.mean())\n",
    "    var.append(cvresult.var())\n",
    "    ge.append((1 - cvresult.mean())**2+cvresult.var())\n",
    "print(axisx[rs.index(max(rs))],max(rs),var[rs.index(max(rs))])\n",
    "print(axisx[var.index(min(var))],rs[var.index(min(var))],min(var))\n",
    "print(axisx[ge.index(min(ge))],rs[ge.index(min(ge))],var[ge.index(min(ge))],min(ge))\n",
    "rs = np.array(rs)\n",
    "var = np.array(var)\n",
    "plt.figure(figsize=(20,5))\n",
    "plt.plot(axisx,rs,c=\"black\",label=\"XGB\")\n",
    "plt.plot(axisx,rs+var,c=\"red\",linestyle='-.')\n",
    "plt.plot(axisx,rs-var,c=\"red\",linestyle='-.')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[15:15:02] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9781823608174333"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg = XGBR(n_estimators=200\n",
    "           ,subsample=0.2\n",
    "           ,random_state=420).fit(Xtrain,Ytrain)\n",
    "reg.score(Xtest,Ytest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib as mpl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "order = Ytest.sort_values().index\n",
    "Ytest = Ytest.loc[order]\n",
    "Xtest = Xtest.loc[order]\n",
    "Ypredict = reg.predict(Xtest)\n",
    "t = np.arange(len(Xtest))\n",
    "mpl.rcParams['font.sans-serif'] = [u'simHei']\n",
    "mpl.rcParams['axes.unicode_minus'] = False\n",
    "plt.figure(facecolor='w')\n",
    "plt.plot(t, Ytest, 'r-', linewidth=2, label=u'真实数据')\n",
    "plt.plot(t, Ypredict, 'g-', linewidth=2, label=u'预测数据')\n",
    "plt.title(u'xgboost预测房价', fontsize=18)\n",
    "plt.legend(loc='upper right')\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
